Полная версия этой страницы:
SAM7
beer_warrior
Mar 28 2006, 06:52
В файле lib_AT91SAM7S64.h функции заявлены как инлайновые, соответственно при многократном включении файла ошибка линкера, при однократном компилер ругается на отсутсвие объявлений.
До последнего времени не обращал внимание на ворнинги, но сейчас уже достало.
Как бы это дело по быстренькому подлечить?
Компилятор gcc.
snake (o)
Mar 28 2006, 07:24
как всегда
#ifndef lib
#define lib
#endif
если склероз не изменяет
или посмотри как используются в *nix
beer_warrior
Mar 28 2006, 07:52
Нет нефига не лечит, код в файле присутствует.
Компилится и линкуется 2 раза.
По уму его бы надо переименовать в .с и сделать заголовочник с декларациями, только мороки много.
перед включением либы сделайте #define __inline inline
Переделывать в .c не надо, всё правильно сделано - инлайн-функции объявляются в том же модуле, в котором используются.
Edmundo
Mar 28 2006, 09:23
Я так подозреваю что можно сделать static inline, тогда видимость этих функций будет только в пределах того С-шного файла, куда они инклюдятся.
beer_warrior
Mar 28 2006, 12:18
Спасибо, выручил компромисный вариант - добавление в начале либы
#define __inline static inline
Таперича она и статическая и синтаксис хавается.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.