Doxygen не документирует переменные после переменной с атрибутом

У меня есть файл .c, в котором объявлено несколько переменных. Один из них имеет атрибут __align(4), т.е. декларация __align(4) static uint32_t myVar;

Когда я создаю документ doxygen для этого исходного файла, в нем перечислены только те переменные, которые объявлены до __align(4) static uint32_t myVar; (myVar также не включен в документ).

Пример:

uint32_t var1;                     //documented by doxygen
static uint32_t var2;              //documented by doxygen
__align(4) static uint32_t myVar;  //NOT documented by doxygen
uint32_t var4;                     //NOT documented by doxygen

Я подозреваю, что doxygen видит, что __align() на самом деле является функцией, и после этого перестает искать объявления переменных.

Как заставить doxygen отображать все мои объявленные переменные? «Хакерским» решением было бы объявить выровненную переменную в нижней части моего раздела переменных, но выровненная переменная все равно не была бы включена в документ.

Любая помощь приветствуется :)

Привет

🤔 А знаете ли вы, что...
C имеет богатую историю и множество книг и ресурсов для изучения.


17
1

Ответ:

Решено

В этом вопросе есть ряд моментов, требующих внимания.

Таким образом, полный Doxyfile может выглядеть так:

EXTRACT_STATIC=YES
PREDEFINED = __align(x)=
MACRO_EXPANSION = YES

и исходный код:

/// \file

/** some docu */
uint32_t var1;                     //documented by doxygen
/** some docu */
static uint32_t var2;              //documented by doxygen
/** some docu */
__align(4) static uint32_t myVar;  //NOT documented by doxygen
/** some docu */
uint32_t var4;                     //NOT documented by doxygen

и все задокументировано, как и ожидалось.