说我有:
#define MY_MACRO(FOO) void FOO();
MY_MACRO(hi);
MY_MACRO(hey);
MY_MACRO(hello);
#undef MY_MACRO
Run Code Online (Sandbox Code Playgroud)
我希望通过doxygen扩展宏,我可以通过正确的方式配置它来完成:
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
EXPAND_AS_DEFINED = MY_MACRO
Run Code Online (Sandbox Code Playgroud)
这使我看到了宏的展开结果作为doxygen的输出记录的API(函数hi,hey和hello).到目前为止,这一切都很好.但问题是,doxygen也将文档MY_MACRO定义为定义.但是,我不希望API的客户端知道MY_MACRO,因为它没有被使用,并且不能被它们使用,并且不应该对它们可见.
我有EXTRACT_ALL = YES我的doxygen配置,我不想改变它.我尝试了以下配置但没有成功:
PREDEFINED = DOXYGEN_SKIP_FOR_USERS
Run Code Online (Sandbox Code Playgroud)
使用以下代码:
#ifndef DOXYGEN_SKIP_FOR_USERS
#define MY_MACRO(FOO) void FOO();
#endif /*DOXYGEN_SKIP_FOR_USERS*/
MY_MACRO(hi);
MY_MACRO(hey);
MY_MACRO(hello);
#undef MY_MACRO
Run Code Online (Sandbox Code Playgroud)
这隐藏了define的文档,但当然会阻止扩展,所以我没有得到生成的API中记录的函数.
我很感激你的帮助.
假设这MY_是你在代码中一直使用的前缀:)我会使用前缀MY__(两个下划线)作为内部宏,然后放一些像
EXCLUDE_SYMBOLS = MY__*
Run Code Online (Sandbox Code Playgroud)
在Doxygen配置文件中.
编辑:内部符号的双下划线是为C++保留的(不适用于C).因此,如果您想要与C和C++兼容,您应该选择其他类型的约定.不幸的是,前导下划线也是保留的,所以_MY_也不会这样做.
| 归档时间: |
|
| 查看次数: |
5346 次 |
| 最近记录: |