Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: То ли баг, то ли фича, то ли с головой что-то
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
shreck
Добрый день.

Компилятор 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"

"Звезда в шоке" sm.gif

Кто что может сказать?

P.S. Такое ощущение, что компилятор воспринимает global_i как локальную в модуле main.
P.P.S А в более поздних версиях компилятора такое поведение наблюдается?
shmur
Ну компилятор просто предупреждает, что переменная объявлена, но нигде не используется. Если оптимизация выключена, то компилер не будет резать такие переменные и они будут кушать память.
megajohn
это фича
а чтобы компилятор не резал. в независимости от оптимизации то примените __root const static
shreck
Цитата(megajohn @ Oct 3 2013, 16:22) *
это фича

Однако. Не ожидал от IAR'a.
У кого свежая версия компилятора, проверьте пожалуйста.
megajohn
Цитата(shreck @ Oct 3 2013, 13:54) *
У кого свежая версия компилятора, проверьте пожалуйста.

эт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
Цитата(shreck @ Oct 3 2013, 13:13) *
P.S. Такое ощущение, что компилятор воспринимает global_i как локальную в модуле main.

Компилятор всё правильно сделал. Это одно из немногих мест, в которых C++ отличается от Си.
Почитайте про const and internal linkage in C++.
shreck
Цитата(scifi @ Oct 3 2013, 17:03) *
Компилятор всё правильно сделал. Это одно из немногих мест, в которых C++ отличается от Си.
Почитайте про const and internal linkage in C++.

Спасибо. Разобрался. Вопрос снят.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.