| AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
Квалификатор extern
26.03.2015, 13:20
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Квалификатор extern
Сообщение от zepto
|
|
зачем иногда прописывают функции
|
Функции прописывать как extern не нужно, они и так extern по умолчанию.
Сообщение от zepto
|
|
Это ошибка, невнимательность или все-таки несет какой-то скрытый смысл?
|
Непорядок это.
|
|
|
|
26.03.2015, 13:23
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Квалификатор extern
Сообщение от Bill
|
|
Размещать исполняемый код в заголовочном файле считается дурным тоном.
|
Дурным тоном это не считается. Иногда так даже правильнее делать.
Сообщение от Bill
|
|
И потом, что что автор называет библиотекой, на самом деле таковой не является. Это просто куски кода, собранные в одном файле.
|
Куски кода вполне могут быть библиотекой.
|
|
|
|
26.03.2015, 14:07
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
|
Re: Квалификатор extern
|
Цитата:
|
|
Функции прописывать как extern не нужно, они и так extern по умолчанию.
|
Если не дать описание extern, то компилятор не найдя в текущем проекте данной функции выдаст ошибку, особенно если в проект подключаются не исходные коды, а уже откомпилированные объектные модули.
__________________
misterdi<@>i.ua
|
|
|
|
26.03.2015, 15:19
|
|
|
Гражданин KAZUS.RUN
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
|
Re: Квалификатор extern
Сообщение от _Артём_
|
Дурным тоном это не считается. Иногда так даже правильнее делать.
Куски кода вполне могут быть библиотекой.
|
http://www.realcoding.net/article/view/1002
|
|
|
|
26.03.2015, 15:28
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Квалификатор extern
Ну, случаи бывают разные...
Размещать код в h-файлах имеет смысл для повышения быстродействия программы. Но это не всегда нужно...
|
|
|
|
26.03.2015, 15:32
|
|
|
Гражданин KAZUS.RUN
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
|
Re: Квалификатор extern
Сообщение от _Артём_
|
|
Размещать код в h-файлах имеет смысл для повышения быстродействия программы.
|
???????????
|
|
|
|
26.03.2015, 15:37
|
|
|
Гражданин KAZUS.RUN
Регистрация: 03.07.2010
Сообщений: 842
Сказал спасибо: 156
Сказали Спасибо 377 раз(а) в 189 сообщении(ях)
|
Re: Квалификатор extern
Угу, а ещё чтоб меньше места занимала 
Сообщение от _Артём_
|
Что непонятно?
Допустим пишем в h-файле inline функции работы с периферией и используем этот хидер в разных проектах. Если те же функции писать в c-файле и вызывать их из своих файлов, то будут генерится вызовы функций, а в случае inline-функций код будет без вызовов. Для обработчиков прерываний это может привести к заметному уменьшению времени выполнения прерывания.
Ещё случай, когда есть смысл располагать код в хидерах - template. Как вы их будете использовать из c-файлов?
|
Вон вы о чём, тогда надо определится, что мы вообще обсуждаем и для чего, а то одни думают про С, другие про С++, третьи вообще про бейсик. И для какой платформы
Последний раз редактировалось С.М.С; 26.03.2015 в 15:53.
|
|
|
|
26.03.2015, 15:39
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Квалификатор extern
Сообщение от Bill
|
|
???????????
|
Что непонятно?
Допустим пишем в h-файле inline функции работы с периферией и используем этот хидер в разных проектах. Если те же функции писать в c-файле и вызывать их из своих файлов, то будут генерится вызовы функций, а в случае inline-функций код будет без вызовов. Для обработчиков прерываний это может привести к заметному уменьшению времени выполнения прерывания.
Ещё случай, когда есть смысл располагать код в хидерах - template. Как вы их будете использовать из c-файлов?
|
|
|
|
26.03.2015, 15:53
|
|
|
Гражданин KAZUS.RUN
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
|
Re: Квалификатор extern
Сообщение от _Артём_
|
Что непонятно?
Допустим пишем в h-файле inline функции работы с периферией и используем этот хидер в разных проектах. Если те же функции писать в c-файле и вызывать их из своих файлов, то будут генерится вызовы функций, а в случае inline-функций код будет без вызовов. Для обработчиков прерываний это может привести к заметному уменьшению времени выполнения прерывания.
Ещё случай, когда есть смысл располагать код в хидерах - template. Как вы их будете использовать из c-файлов?
|
Если inline функции, то понятно. Только, опять же, эти функции в заголовочном файле не являются исполняемым кодом, поскольку это всего лишь указание компилятору, что нужно делать когда в транслируемом модуле встречается обращение к такой функции. Уберите из определения функции квалификатор inline и получите исполняемый код.
|
|
|
|
26.03.2015, 16:09
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Квалификатор extern
Сообщение от Bill
|
|
Если inline функции, то понятно. Только, опять же, эти функции в заголовочном файле не являются исполняемым кодом, поскольку это всего лишь указание компилятору, что нужно делать когда в транслируемом модуле встречается обращение к такой функции.
|
Как это не исполняемый код? Он же описывает алгоритм работы программы, значит исплняемый.
Шаблоны тоже не исполняемый код по вашему?
Сообщение от Bill
|
|
Уберите из определения функции квалификатор inline и получите исполняемый код.
|
Согласен, если inline убрать, то это не есть правильно.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:41.
|
|