gpt4 book ai didi

c - 将 pragma 扩展为注释(对于 doxygen)

转载 作者:太空宇宙 更新时间:2023-11-04 00:43:56 24 4
gpt4 key购买 nike

注释通常在预处理器运行之前转换为单个空白。但是,有一个引人注目的用例。

#pragma once   

#ifdef DOXYGEN
#define DALT(t,f) t
#else
#define DALT(t,f) f
#endif

#define MAP(n,a,d) \
DALT ( COMMENT(| n | a | d |) \
, void* mm_##n = a \
)

/// Memory map table
/// | name | address | description |
/// |------|---------|-------------|
MAP (reg0 , 0 , foo )
MAP (reg1 , 8 , bar )

在此示例中,当设置了 DOXYGEN 标志时,我想从宏中生成 doxygen 标记。如果不是,我想生成变量。在这种情况下,所需的行为是在宏中生成注释。有什么想法吗?

我试过 /##/ 和另一个更间接的例子

#define COMMENT SLASH(/)
#define SLASH(s) /##s

都没有用。

最佳答案

在 doxygen 中,可以在将源输入到 doxygen 内核之前在源上运行命令。在 Doxyfile 中有一些 FILTER 可能性。在这种情况下:INPUT_FILTER 该行应为:

INPUT_FILTER = "sed -e 's%^ *MAP *(\([^,]*\),\([^,]*\),\([^)]*\)) %///|\1 |\2 |\3 |%'"

此外,整个 #if 结构可以消失,一个可能只需要:

#define MAP(n,a,d) void* mm_##n = a

关于c - 将 pragma 扩展为注释(对于 doxygen),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52538489/

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