Перейти к содержанию
    

То ли баг, то ли фича, то ли с головой что-то

Добрый день.

 

Компилятор 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 А в более поздних версиях компилятора такое поведение наблюдается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну компилятор просто предупреждает, что переменная объявлена, но нигде не используется. Если оптимизация выключена, то компилер не будет резать такие переменные и они будут кушать память.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это фича

а чтобы компилятор не резал. в независимости от оптимизации то примените __root const static

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это фича

Однако. Не ожидал от IAR'a.

У кого свежая версия компилятора, проверьте пожалуйста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У кого свежая версия компилятора, проверьте пожалуйста.

этo нopмaльнoe пoвeдeниe нopмaльнo кoмпилятopa - выкидывaть нeиcпoльзyeмыe кycки кoдa и дaнныx

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

P.S. Такое ощущение, что компилятор воспринимает global_i как локальную в модуле main.

Компилятор всё правильно сделал. Это одно из немногих мест, в которых C++ отличается от Си.

Почитайте про const and internal linkage in C++.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Компилятор всё правильно сделал. Это одно из немногих мест, в которых C++ отличается от Си.

Почитайте про const and internal linkage in C++.

Спасибо. Разобрался. Вопрос снят.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...