Easyelectronics.ru

Электроника для всех
Текущее время: 27 ноя 2020, 11:30

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Doxygen и атрибуты функций __attribute__(())
СообщениеДобавлено: 10 сен 2020, 22:06 
Заглядывает иногда

Зарегистрирован: 10 сен 2020, 21:37
Сообщения: 148
Здоровья всем.
Дошел в своем развитии до системы документирования кода Doxygen, начал разбираться. И столкнулся с проблемой неправильной интерпретации атрибутов функции системой документирования.
То есть, есть функция с атрибутом и документирующий блок по правилам Doxygen:
Код:
/** -------------------------------------------------------
* \brief      Блокирующая задержка
* \param[in]   nCount - счетчик
*/
__attribute__((optimize("-O2")))void Delay(volatile uint32_t nCount)
{
   for (; nCount > 0; nCount--);
}

и в результате генерации документации получаю предупреждение
warning: argument 'nCount' of command @param is not found in the argument list of __attribute__((optimize("-O2")))
и самое главное, в документации функция отображается неверно - doxygen ошибочно считает именем функции слово __attribute__()
В мануале сказано, что подобная ошибка имеет место быть из-за схожести внешнего вида и скобок. Ладно, это понятно. Но что же делать, как быть?
Если переставить атрибут после функции, то это будет уже ошибка компиляции программного кода: "attributes should be specified before the declarator in a function definition"

Подскажите, что тут не так, где я неправильно делаю?
Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Doxygen и атрибуты функций __attribute__(())
СообщениеДобавлено: 10 сен 2020, 22:12 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2010, 20:18
Сообщения: 602
Наверно надо упрятать аттрибут в макрос.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Doxygen и атрибуты функций __attribute__(())
СообщениеДобавлено: 10 сен 2020, 22:18 
Заглядывает иногда

Зарегистрирован: 10 сен 2020, 21:37
Сообщения: 148
Угу... да, сработало, спасибо. Хм, метод корявый, но сработал. Ладно, хорошо. Но быть может еще есть способы?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Doxygen и атрибуты функций __attribute__(())
СообщениеДобавлено: 10 сен 2020, 22:33 
Заглядывает иногда

Зарегистрирован: 15 ноя 2015, 12:11
Сообщения: 199
Пельмень Мясной писал(а):
Но быть может еще есть способы?

А так?

Код:
void Delay(volatile uint32_t nCount)  __attribute__((optimize("-O2")))


и читабельность заодно возрастёт.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Doxygen и атрибуты функций __attribute__(())
СообщениеДобавлено: 10 сен 2020, 22:54 
Заглядывает иногда

Зарегистрирован: 10 сен 2020, 21:37
Сообщения: 148
Да, но только это надо делать в прототипе функции. Я об этом тоже уже подумал. В общем, да, работает, и программный код вроде как правильно компилится с учетом атрибута. Так более красивше выглядит.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB