ashr 0 3 октября, 2013 Опубликовано 3 октября, 2013 · Жалоба Добрый день. Компилятор IAR ARM 6.50.5 (оптимизация - none) Столкнулся со следующим поведением компилятора. Имеем минимальный проект из одного файла: // main.cpp const int global_i = 3; void main() { } Так вот, на глобальную константную переменную компилятор выдает "Warning[Pe177]: variable "global_i" was declared but never referenced" "Звезда в шоке" :) Кто что может сказать? P.S. Такое ощущение, что компилятор воспринимает global_i как локальную в модуле main. P.P.S А в более поздних версиях компилятора такое поведение наблюдается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shmur 0 3 октября, 2013 Опубликовано 3 октября, 2013 · Жалоба Ну компилятор просто предупреждает, что переменная объявлена, но нигде не используется. Если оптимизация выключена, то компилер не будет резать такие переменные и они будут кушать память. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megajohn 3 3 октября, 2013 Опубликовано 3 октября, 2013 · Жалоба это фича а чтобы компилятор не резал. в независимости от оптимизации то примените __root const static Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ashr 0 3 октября, 2013 Опубликовано 3 октября, 2013 · Жалоба это фича Однако. Не ожидал от IAR'a. У кого свежая версия компилятора, проверьте пожалуйста. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megajohn 3 3 октября, 2013 Опубликовано 3 октября, 2013 · Жалоба У кого свежая версия компилятора, проверьте пожалуйста. этo нopмaльнoe пoвeдeниe нopмaльнo кoмпилятopa - выкидывaть нeиcпoльзyeмыe кycки кoдa и дaнныx Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 3 октября, 2013 Опубликовано 3 октября, 2013 · Жалоба P.S. Такое ощущение, что компилятор воспринимает global_i как локальную в модуле main. Компилятор всё правильно сделал. Это одно из немногих мест, в которых C++ отличается от Си. Почитайте про const and internal linkage in C++. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ashr 0 3 октября, 2013 Опубликовано 3 октября, 2013 · Жалоба Компилятор всё правильно сделал. Это одно из немногих мест, в которых C++ отличается от Си. Почитайте про const and internal linkage in C++. Спасибо. Разобрался. Вопрос снят. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться