我有一个.c文件,其中声明了几个变量。其中一个具有属性__align(4)
,即声明为__align(4) static uint32_t myVar;
当我为这个源文件创建氧文档时,它只列出了在__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
我怀疑氧看到__align()
实际上是一个函数,然后停止寻找变量声明。
我如何让氧列出所有我声明的变量?一个"hacky"解决方案是在变量部分的底部声明对齐的变量,但对齐的变量仍然不会包含在文档中。
任何帮助都是非常感谢的:)
的问候这个问题有几点需要注意。
- 在示例中没有任何文档,因此我们需要设置
EXTRAC_ALL=YES
(参见https://www.doxygen.nl/manual/config.html#cfg_extract_all)或记录变量 - 的许多变量都是
static
,这意味着我们还需要设置EXTRACT_STATIC=YES
(参见https://www.doxygen.nl/manual/config.html#cfg_extract_static) myVar
的声明具有非标准属性__align
,这必须以与属性__attribute__
类似的方式处理,参见https://www.doxygen.nl/manual/preprocessing.html),所以:PREDEFINED = __align(x)=
MACRO_EXPANSION = YES
所以完整的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
和所有的文档都是按照预期的。