【问题标题】:Document mutually exclusive defines文档互斥定义
【发布时间】:2012-05-03 22:14:44
【问题描述】:

我正在用 C 编写一个小程序,我想记录它以便其他人可以更改一些细节。我用#defines 写了一个config.h 文件,它可以启用或不启用某些操作,其中一些是互斥的,有些则不是。

不互斥的例子:

#define USE_A
#define USE_B
#define USE_C

互斥示例:

#define BUILD_FULL
#define BUILD_COMPACT

到目前为止,我通过记录我不想使用的功能来选择要编译的程序的配置,例如:

//#define BUILD_FULL
#define BUILD_COMPACT

构建 COMPACT 可执行文件。

如何为注释掉的功能编写文档?

我试过了:

#define USE_A //!< Special Feature
#define USE_B //!< Special Feature
//#define USE_C //!< Special Feature

我在没有USE_C 的情况下编译了它,但显然我丢失了文档,因为 doxygen 没有解析它。如果我误解了使用定义的正确方法,您将如何重写 #define 流程?

【问题讨论】:

    标签: c comments doxygen cperl-mode


    【解决方案1】:

    您可以测试宏的,而不仅仅是它的存在。例如,使用 0 禁用选项,或使用 1 启用它。然后,使用#if 而不是#ifdef 来测试条件。

    #define USE_A 1    //!< Special Feature
    #define USE_B 1    //!< Special Feature
    #define USE_C 0    //!< Special Feature
    
    #if USE_A
    ...
    #elif USE_C
    ...
    #endif  
    

    【讨论】:

    • 是的,我已经知道通过这种方式我可以将定义留在适当的位置,因此代码随处可见。唯一的问题是我需要编辑我所有的代码:(猴子修补时间:)
    猜你喜欢
    • 2011-01-06
    • 2016-02-18
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多