Перейти к содержанию
    

WinAVR inline function

Есть функиция

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)) так, чтобы ее можно было вызывать из функций, реализованных в других файлах проекта ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Определить её тело в заголовочном файле вместе с атрибутом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Определить её тело в заголовочном файле вместе с атрибутом.

 

А что делать с возвращаемым значением?.

Она у меня возвращает адрес глобальной переменной, глобальной для того файла, в котором она реализована.

Что-то типа стиля С++, файл с реализациями функций как класс в С++.

 

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

 

И если я правильно понял, то ничего не получится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно внутри функции в file.h написать:

static inline __attribute__((always_inline)) int foo(int i)
{
    extern int x[];
    return (x[i]);
}

А в файле реализации убрать static перед int x[];

Конечно, не совсем кошерно, но это ИМХО единственный способ скрыть глобальную переменную....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно внутри функции в file.h написать:

..........................................

Конечно, не совсем кошерно, но это ИМХО единственный способ скрыть глобальную переменную....

 

Спасибо !!!

Все получилось :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...