16+
Понедельник
24 сентября
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

Микроконтроллеры

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
sladkoejka  (06.07.2018 15:07 - 06.07.2018 15:15, файл(ы)) , в ответ на поциент слился автор: SciFi
Я не вижу смысла с вами спорить. Насчёт volatile указателей пример я вам привел. Продублирую и тут: 
#include <stdio.h>

void main( void )
{
    int x = 123;
    *(volatile int*)&x;
}
Результат компиляции с оптимизациями:
main:
    0080BA    81             RET
По вашей логике компилятор не имел права оптимизировать присвоение переменной и обращение к ней по указателю, т.к. указатель помечен как volatile. Однако на деле компилятор выбросил весь код из main, вместе c volatile указателем. И по моей логике это соответствует стандарту. И вот почему. Переменная локальная и никем кроме main использоваться не может. Указатель на неё тоже локальный и за пределами main никому не доступен. Соответственно выкидывание кода ни на что не влияет. Что оптимизатор и сделал - просто выбросил весь код, вместе с volatile указателем. И на поведении кода это никак не отразилось, он как ничего не делал, так и не делает. Несмотря на volatile.
Прикреплённые файлы:
volatile.png:91 K

Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7527 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVIII