AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
26.03.2015, 18:29
|
|
Гражданин KAZUS.RU
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
|
Re: Квалификатор extern
Сообщение от dosikus
|
Если не ошибаюсь - исполняемый код в хэдерах, в каких-то компиляторах,
при компиляции каждого модуля куда сей хэдер инклудится, наплодит сущностей и защитный дефайн не поможет.
|
Это же легко проверяется. Линкер при этом выдаст кучу ошибок типа multiply defined symbols
|
|
|
|
26.03.2015, 18:52
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Квалификатор extern
__________________
Осторожно , злой кот
|
|
|
|
27.03.2015, 06:49
|
|
Прохожий
Регистрация: 26.03.2015
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Квалификатор extern
Да... Вижу тема получила продолжение в какую-то другую сторону, но это тоже хорошо!
Сообщение от С.М.С
|
Вон вы о чём, тогда надо определится, что мы вообще обсуждаем и для чего, а то одни думают про С, другие про С++, третьи вообще про бейсик. И для какой платформы
|
Изначально я имел в виду компилятор языка Си для AVR, который в Atmel Studio 6.2
Кстати, кто-нибудь знает, что там за компилятор?
Компилятор, если я не ошибаюсь, использует стандарт языка С99, так как позволяет определять переменную прямо в цикле for(uin8_t i=0, i‹10, i++){} Поправьте, если не так.
И все-таки, вот если я вижу что в .с файле программист определил переменную или функцию с extern, то что это означает? То что программист "учился" по урокам от Александра Писанеца?
И я правильно буду делать, если буду объявлять в заголовочном файле функции и переменные с extern, если мне их надо будет использовать в других файлах проекта? Или функции не обязательно объявлять с extern, та как они и так будут доступны в других файлах проекта?
|
|
|
|
27.03.2015, 08:37
|
|
Гражданин KAZUS.RU
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
|
Re: Квалификатор extern
Сообщение от zepto
|
Да... Вижу тема получила продолжение в какую-то другую сторону, но это тоже хорошо!
Изначально я имел в виду компилятор языка Си для AVR, который в Atmel Studio 6.2
Кстати, кто-нибудь знает, что там за компилятор?
Компилятор, если я не ошибаюсь, использует стандарт языка С99, так как позволяет определять переменную прямо в цикле for(uin8_t i=0, i‹10, i++){} Поправьте, если не так.
И все-таки, вот если я вижу что в .с файле программист определил переменную или функцию с extern, то что это означает? То что программист "учился" по урокам от Александра Писанеца? ![Озадачен](images/smilies/icon_confused.gif)
И я правильно буду делать, если буду объявлять в заголовочном файле функции и переменные с extern, если мне их надо будет использовать в других файлах проекта? Или функции не обязательно объявлять с extern, та как они и так будут доступны в других файлах проекта?
|
Квалификатор extern для функции в настоящее время практически ничего не означает. Просто сейчас используется понятие прототипа (prototype) функции. Когда K&R создали первый стандарт языка, такого понятия не существовало. Что касается переменных, то квалификатор extern сообщает компилятору информацию о данной переменной (ее тип, размерность и т.д.) без необходимости выделения под нее памяти. Для сравнения, в обычной книжной библиотеки имеется каталог с книжными карточками, в которых описаны данные о книге (название, автор, место нахождения книги...). Сами книги находятся в других местах. Можно ходить самому среди полок с книгами и выискивать нужную книгу. А можно сделать выписку с карточки и отдать ее дежурному библиотекарю. Тогда вы сможете получить нужную вам книгу гораздо быстрее.
Компилятор в AVRstudio - AVR GCC.
|
|
|
|
27.03.2015, 09:08
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,924
Сказал спасибо: 2,543
Сказали Спасибо 11,821 раз(а) в 5,927 сообщении(ях)
|
Re: Квалификатор extern
Сообщение от zepto
|
И все-таки, вот если я вижу что в .с файле программист определил переменную или функцию с extern, то что это означает? То что программист "учился" по урокам от Александра Писанеца?
|
Посмотрите, например, тут, а вообще - Гоголь его знает.
Многое зависит от реализации компилятора. Один понимает и без экстернов, другой брыкается.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
27.03.2015, 11:48
|
|
Прописка
Регистрация: 31.10.2006
Сообщений: 149
Сказал спасибо: 15
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
|
Re: Квалификатор extern
Обсуждение extern не может считаться полным без обсуждения static.
Щетаю, тема не раскрыта в полном объёме
|
|
|
|
27.03.2015, 11:54
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Квалификатор extern
Угу! Осталось добавить volatile, приправить статьями о вреде их использования, и можно считать кашу из топора сваренной!
|
|
|
|
27.03.2015, 12:15
|
|
Гражданин KAZUS.RU
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
|
Re: Квалификатор extern
Сообщение от akegor
|
Многое зависит от реализации компилятора. Один понимает и без экстернов, другой брыкается.
|
Лично я таких "понимающих" компиляторов что-то не встречал. Пример можете привести?
|
|
|
|
27.03.2015, 12:24
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Квалификатор extern
Сообщение от STM32F0
|
volatile, приправить статьями о вреде их использования
|
Какой вред может быть от использования volatile? О чём вы?
Их надо использовать там где они нужны. или нет?
|
|
|
|
27.03.2015, 12:26
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,924
Сказал спасибо: 2,543
Сказали Спасибо 11,821 раз(а) в 5,927 сообщении(ях)
|
Re: Квалификатор extern
Сообщение от Bill
|
Пример можете привести?
|
Не. Лениво искать и проверять. В целях единобезобразности просто применяю - и все дела. А требуют или нет - меня в энтом случАе не е... колышет.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:30.
|
|