Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: WinAVR inline function
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
dimka76
Есть функиция
Код
static volatile UCHAR        rcv_buff_U0[265];

UCHAR* Get_Data_U0(void)
{
  return (UCHAR*)rcv_buff_U0;
}


И ее прототип, объявленный в заголовочном файле
Код
UCHAR* Get_Data_U0(void);


Как правильно ее сделать inline функцией с аттрибутом __attribute__((always_inline)) так, чтобы ее можно было вызывать из функций, реализованных в других файлах проекта ?
IgorKossak
Определить её тело в заголовочном файле вместе с атрибутом.
dimka76
Цитата(IgorKossak @ Apr 8 2010, 10:21) *
Определить её тело в заголовочном файле вместе с атрибутом.


А что делать с возвращаемым значением?.
Она у меня возвращает адрес глобальной переменной, глобальной для того файла, в котором она реализована.
Что-то типа стиля С++, файл с реализациями функций как класс в С++.

Кстати, нашел похожую тему здесь.

И если я правильно понял, то ничего не получится.
demiurg_spb
Можно внутри функции в file.h написать:
Код
static inline __attribute__((always_inline)) int foo(int i)
{
    extern int x[];
    return (x[i]);
}

А в файле реализации убрать static перед int x[];
Конечно, не совсем кошерно, но это ИМХО единственный способ скрыть глобальную переменную....
dimka76
Цитата(demiurg_spb @ Apr 8 2010, 12:40) *
Можно внутри функции в file.h написать:
..........................................
Конечно, не совсем кошерно, но это ИМХО единственный способ скрыть глобальную переменную....


Спасибо !!!
Все получилось smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.