有时您可能有一个要记录的定义,但希望 doxygen 以不同的方式处理它(甚至完全忽略它以避免解析错误)。为此,您可以在 doxygen 中定义与在源代码中不同的 #define。
示例:一些编译器允许变量链接到特定段,即:
const int myvar @ "segment_of_myvar_in_memory"=123;
=> doxygen 会将“segment_of_myvar_in_memory”部分解析为不需要的变量名。我们可以为它使用一个定义:
#define __link_to_segment(name) @ name
const int myvar __link_to_segment("segment_of_myvar_in_memory")=123;
如果预处理处于活动状态,Doxygen 现在将我们的变量解释为一个函数,因为使用括号进行类似函数的定义。但是如果我们在 Doxyfile 中重新定义我们的定义,行为会发生变化:
PREDEFINED = __link_to_segment(a)=
现在变量被正确解析为变量 - 前面的所有类型或关键字也正确显示为关键字。
一个很好的副作用:如果您在代码中使用 2 个不同的 IDE(一个用于编译和调试的 IDE,一个用于编辑),您还会发现某些 IDE(即 Eclipse)在解析带有 @"segment name" 的变量时存在问题。使用上述方法,您也可以在那里重新定义 __link_to_segment(name) :
#define __link_to_segment(name)
即 Eclipse 将正确显示和解析变量,而“编译和调试”IDE 仍然可以将变量链接到其段名称。