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

 
 
> Использование extern в нескольких файлах
kolobochishe
сообщение Jan 24 2012, 06:18
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 14-04-10
Из: Россия, г.Челябинск
Пользователь №: 56 634



Почему компилятор (IAR) не выдает ошибки в случае если переменная определена как глобальная в 2-х файлах с одним и тем же именем, а в третьем объявлена как extern? На какую из 2-х глобальных переменных в итоге она (объявленная как extern) будет ссылаться?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
kolobochishe
сообщение Jan 24 2012, 07:57
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 14-04-10
Из: Россия, г.Челябинск
Пользователь №: 56 634



да. На простом Си. Не инициализирована.
Забавно. Т.е. даже не использую extern эта переменная будет одна на все модули? как-то опасно. Или единожды где-то указать extern все таки надо?

Ну ситуация в общем такая. Объявлена глобально переменная в разных модулях с одним и тем же именем. Понятно, что это 2 разные глобальные переменные в разных модулях. Только имя одно. Но в третьем я ее записал как extern. Вот на какую из них ссылается extern?

ммм... извиняюсь за вопрос. все таки ошибка линкера есть. просто у меня другие ошибки были и до этой не дошло.

Сейчас попробовал объявить глобальные переменные с одинаковыми именами в 2-х модулях и линкер тоже сообщает об ошибках. Разве не должно быть, чтобы переменные хоть и с одним именем, но в итоге должны быть разные?

наверно я чего то недопонимаю. static позволяет сделать глобальную переменную невидимой для других модулей? т.е. мне надо перед глобальными переменными ставить static, чтобы линкер не ругался?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- kolobochishe   Использование extern в нескольких файлах   Jan 24 2012, 06:18
- - Палыч   Цитата(kolobochishe @ Jan 24 2012, 10:18)...   Jan 24 2012, 06:34
- - XVR   Если программа на С (не С++ !) и переменная в ...   Jan 24 2012, 07:25
|- - Сергей Борщ   QUOTE (XVR @ Jan 24 2012, 09:25) Если про...   Jan 24 2012, 07:33
|- - XVR   Цитата(Сергей Борщ @ Jan 24 2012, 11:33) ...   Jan 24 2012, 08:01
|- - ViKo   Цитата(XVR @ Jan 24 2012, 11:01) Нет, в С...   Jan 24 2012, 08:43
|- - XVR   Цитата(ViKo @ Jan 24 2012, 12:43) Нет, эт...   Jan 24 2012, 10:52
|- - ReAl   Цитата(XVR @ Jan 24 2012, 10:41) Как види...   Jan 24 2012, 11:41
|- - ViKo   Цитата(XVR @ Jan 24 2012, 13:52) Стандарт...   Jan 24 2012, 11:50
|- - Палыч   Цитата(ViKo @ Jan 24 2012, 15:50) Но разв...   Jan 24 2012, 12:00
|- - XVR   Цитата(ViKo @ Jan 24 2012, 15:50) Единств...   Jan 24 2012, 14:18
- - kolobochishe   хм... а ИАР мне так не разрешает. Объявления без и...   Jan 24 2012, 08:11
- - demitar   хм, заинтриговали, у меня IAR'овский линкер на...   Jan 24 2012, 08:12
- - kolobochishe   а так у меня Error[Li006]: duplicate definitions...   Jan 24 2012, 08:20
- - demitar   у меня старый иар, поэтому сообщения отличаются, н...   Jan 24 2012, 08:25
- - kolobochishe   Понятно Спасибо за разъяснения. Почему то всегда ...   Jan 24 2012, 08:30
|- - XVR   Цитата(kolobochishe @ Jan 24 2012, 12:30)...   Jan 24 2012, 08:41
- - andrew_b   По умолчанию в Си переменные имеют внешнее связыва...   Jan 24 2012, 12:02
|- - dxp   QUOTE (andrew_b @ Jan 24 2012, 19:02) По ...   Jan 24 2012, 15:49
|- - andrew_b   Нет, переменные. И функции тоже. Про константы утв...   Jan 25 2012, 04:36
|- - am1808   Цитата(andrew_b @ Jan 25 2012, 08:36) Нет...   Feb 3 2012, 10:11
- - Marto   XVR, а мне помнится, что во исходном файле глобаль...   Feb 14 2012, 05:42
- - XVR   Цитата(Marto @ Feb 14 2012, 09:42) а мне ...   Feb 14 2012, 08:18


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

 


RSS Текстовая версия Сейчас: 11th August 2025 - 23:49
Рейтинг@Mail.ru


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