gpt4 book ai didi

c++ - 如何通过 doxygen 扩展宏,但没有记录为定义?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:17:28 24 4
gpt4 key购买 nike

假设我有:

#define MY_MACRO(FOO) void FOO();

MY_MACRO(hi);
MY_MACRO(hey);
MY_MACRO(hello);

#undef MY_MACRO

我希望通过 doxygen 扩展宏,我可以通过正确的方式配置它来实现:

ENABLE_PREPROCESSING   = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
EXPAND_AS_DEFINED = MY_MACRO

这使我能够在 doxygen 输出中看到宏的扩展结果作为记录的 API(函数 hiheyhello ).到目前为止一切都很好。但问题是,doxygen 也将 MY_MACRO 记录为定义。但是,我不希望 API 的客户端知道 MY_MACRO,因为它是未定义的并且不能被他们使用,并且不应该对他们可见。

我的 doxygen 配置中有 EXTRACT_ALL = YES,我不想更改它。我尝试了以下配置但没有成功:

PREDEFINED      = DOXYGEN_SKIP_FOR_USERS

使用以下代码:

#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

这隐藏了定义的文档,但当然会阻止扩展,所以我没有得到生成的 API 中记录的函数。

非常感谢您的帮助。

最佳答案

假设 MY_ 是您在代码中始终使用的前缀 :) 我会为内部宏使用前缀 MY__(两个下划线)然后放一些东西喜欢

EXCLUDE_SYMBOLS        = MY__*

Doxygen 配置文件中。

编辑: 符号内的双下划线是为 C++(不是为 C)保留的。所以如果你想与 C 和 C++ 兼容,你应该选择一些其他类型的约定。不幸的是,前导下划线也被保留了,所以 _MY_ 两者都不会做。

关于c++ - 如何通过 doxygen 扩展宏,但没有记录为定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3732626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com