|
IAR пропустил одинаковое объявление переменной |
|
|
|
Nov 27 2014, 20:46
|
Знающий
   
Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454

|
Цитата(psL @ Nov 27 2014, 22:02)  на картинке вообще эклипс. Затмение то есть  Троллинг удался :-) В предварительном просмотре сообщения не отображается картика. Выкладываю правильную картинку. По эклипсу тоже вопрос по поводу невозможности удаления путей. Но он с другой оперы.
Эскизы прикрепленных изображений
|
|
|
|
|
Nov 28 2014, 09:27
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(MrYuran @ Nov 28 2014, 12:42)  ..если объявить в разных файлах - два, на которые потом ругается линкер. Он может и не ругаться (во всяком случае по стандарту). Более того он выделит под переменные из разных файлов с одинаковым именем общую память. И можно очень весело проводить время, отлаживая проект из двух файлов, скажем такого содержания. Код int a; и Код char a; Именно для этого случая Си и предоставляет инструмент в виде ключевого слова static. И если глобальная переменная внутри модуля не представлена в его интерфейсе (в заголовочном файле как extern), то она обязана иметь квалификатор static. Всё остальное - просто неграмотно. Цитата(ViKo @ Nov 28 2014, 12:53)  Keil такого не принимает. Естественно. Более того и для gcc это является атавизмом после появления ключика -flto.
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Nov 28 2014, 10:03
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(MrYuran @ Nov 28 2014, 13:57)  Только что проверил на gcc-4.7.2. Съел молча проект из двух файлов, в каждом из которых было объявление int a; И это ожидаемое поведение.
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Nov 28 2014, 10:22
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(MrYuran @ Nov 28 2014, 11:57)  Обычно все-таки выкатывает error multiple definition Если компилировать в режиме C++. Для Сей это является допустимым.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Nov 29 2014, 07:59
|
Знающий
   
Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454

|
Цитата(Сергей Борщ @ Nov 28 2014, 12:22)  Если компилировать в режиме C++. Для Сей это является допустимым. Хотелось, чтобы такие ошибки вылавливались компилятором. В IAR есть MISRA. Я никогда ее не использовал. Есть ли чего обзорного почитать?
|
|
|
|
|
Nov 29 2014, 18:38
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(misyachniy @ Nov 29 2014, 09:59)  Хотелось, чтобы такие ошибки вылавливались компилятором. Включите режим C++ . Про MISRA не знаю, но если там все так страшно, как здесь описывают - и знать не хочу. Сделать из C кастрированный бейсик - нет уж.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|