Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

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  
MisterDi
Почётный гражданин KAZUS.RUN
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Квалификатор extern

Цитата:
Функции прописывать как extern не нужно, они и так extern по умолчанию.
Если не дать описание extern, то компилятор не найдя в текущем проекте данной функции выдаст ошибку, особенно если в проект подключаются не исходные коды, а уже откомпилированные объектные модули.
__________________
misterdi<@>i.ua
MisterDi вне форума  
Непрочитано 26.03.2015, 15:19  
Bill
Гражданин KAZUS.RUN
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: Квалификатор extern

Сообщение от _Артём_ Посмотреть сообщение
Дурным тоном это не считается. Иногда так даже правильнее делать.


Куски кода вполне могут быть библиотекой.
http://www.realcoding.net/article/view/1002
Bill вне форума  
Непрочитано 26.03.2015, 15:28  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Квалификатор extern

Сообщение от Bill Посмотреть сообщение
http://www.realcoding.net/article/view/1002
Ну, случаи бывают разные...
Размещать код в h-файлах имеет смысл для повышения быстродействия программы. Но это не всегда нужно...
_Артём_ вне форума  
Непрочитано 26.03.2015, 15:32  
Bill
Гражданин KAZUS.RUN
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: Квалификатор extern

Сообщение от _Артём_ Посмотреть сообщение
Размещать код в h-файлах имеет смысл для повышения быстродействия программы.
???????????
Bill вне форума  
Непрочитано 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  
Bill
Гражданин KAZUS.RUN
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: Квалификатор extern

Сообщение от _Артём_ Посмотреть сообщение
Что непонятно?
Допустим пишем в h-файле inline функции работы с периферией и используем этот хидер в разных проектах. Если те же функции писать в c-файле и вызывать их из своих файлов, то будут генерится вызовы функций, а в случае inline-функций код будет без вызовов. Для обработчиков прерываний это может привести к заметному уменьшению времени выполнения прерывания.

Ещё случай, когда есть смысл располагать код в хидерах - template. Как вы их будете использовать из c-файлов?
Если inline функции, то понятно. Только, опять же, эти функции в заголовочном файле не являются исполняемым кодом, поскольку это всего лишь указание компилятору, что нужно делать когда в транслируемом модуле встречается обращение к такой функции. Уберите из определения функции квалификатор inline и получите исполняемый код.
Bill вне форума  
Непрочитано 26.03.2015, 16:09  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Квалификатор extern

Сообщение от Bill Посмотреть сообщение
Если inline функции, то понятно. Только, опять же, эти функции в заголовочном файле не являются исполняемым кодом, поскольку это всего лишь указание компилятору, что нужно делать когда в транслируемом модуле встречается обращение к такой функции.
Как это не исполняемый код? Он же описывает алгоритм работы программы, значит исплняемый.
Шаблоны тоже не исполняемый код по вашему?


Сообщение от Bill Посмотреть сообщение
Уберите из определения функции квалификатор inline и получите исполняемый код.
Согласен, если inline убрать, то это не есть правильно.
_Артём_ вне форума  
 

Метки
avr-gcc, extern, язык си
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пара непонятных моментов по языку СИ kvark85 Embedd С 102 17.05.2013 23:43
struct & union в многофайловом проекте. picavr Микроконтроллеры, АЦП, память и т.д 20 25.02.2010 13:44


Часовой пояс GMT +4, время: 12:41.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.