реклама на сайте
подробности

 
 
> IAR пропустил одинаковое объявление переменной
misyachniy
сообщение Nov 27 2014, 17:37
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



При подчистке программы обнаружил, что переменная объявлена 2 раза, но компилятор пропустил без предупреждений.
Прикрепленное изображение


Я то стер одно объявление, но почему компилятор пропустил не понимаю.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MrYuran
сообщение Nov 28 2014, 08:17
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



А теперь попробуйте разнести по разным файлам.
rolleyes.gif


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 28 2014, 08:38
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(MrYuran @ Nov 28 2014, 11:17) *
А теперь попробуйте разнести по разным файлам.
rolleyes.gif

xxxx.axf: Error: L6200E: Symbol xxx multiply defined (by xx.o and x.o).
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 28 2014, 08:42
Сообщение #4


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(ViKo @ Nov 28 2014, 12:38) *
xxxx.axf: Error: L6200E: Symbol xxx multiply defined (by xx.o and x.o).

То есть, в пределах одной единицы компиляции при множественном объявлении образуется один объект, а если объявить в разных файлах - два, на которые потом ругается линкер.

Интересно, что будет при использовании флага -combine


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Nov 28 2014, 09:27
Сообщение #5


неотягощённый злом
******

Группа: Свой
Сообщений: 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.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- misyachniy   IAR пропустил одинаковое объявление переменной   Nov 27 2014, 17:37
- - scifi   При споре компилятора с человеком в 99% случаев пр...   Nov 27 2014, 19:40
- - SSerge   Где переменная? Не вижу там ни одной переменной. ...   Nov 27 2014, 19:52
- - psL   на картинке вообще эклипс. Затмение то есть   Nov 27 2014, 20:02
|- - scifi   Цитата(psL @ Nov 27 2014, 23:02) на карти...   Nov 27 2014, 20:42
|- - misyachniy   Цитата(psL @ Nov 27 2014, 22:02) на карти...   Nov 27 2014, 20:46
|- - Dr.Alex   Кто тебе сказал, что это запрещено? Если бы опреде...   Nov 27 2014, 20:56
|- - scifi   Цитата(Dr.Alex @ Nov 27 2014, 23:56) Кто ...   Nov 27 2014, 21:00
- - ViKo   В Keil, однако, такое не прокатило.   Nov 27 2014, 21:12
|- - scifi   Цитата(ViKo @ Nov 28 2014, 00:12) В Keil,...   Nov 27 2014, 21:17
|- - MrYuran   Цитата(demiurg_spb @ Nov 28 2014, 13:27) ...   Nov 28 2014, 09:57
|- - demiurg_spb   Цитата(MrYuran @ Nov 28 2014, 13:57) Тол...   Nov 28 2014, 10:03
|- - Сергей Борщ   Цитата(MrYuran @ Nov 28 2014, 11:57) Обыч...   Nov 28 2014, 10:22
|- - misyachniy   Цитата(Сергей Борщ @ Nov 28 2014, 12:22) ...   Nov 29 2014, 07:59
|- - Сергей Борщ   Цитата(misyachniy @ Nov 29 2014, 09:59) Х...   Nov 29 2014, 18:38
- - ViKo   А сегодня в одном файле - прокатило. А-а-а!...   Nov 28 2014, 08:53


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 14:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01435 секунд с 7
ELECTRONIX ©2004-2016