繁体   English   中英

如何在一处注释#ifdef下的值

[英]how to comment values under #ifdef in one place

假设我们有一个C ++项目,该项目应该在多个平台上工作(例如arm / arm64),并且每个平台都需要有特定于目标的值。

现在,我们这样做:

#ifdef PLATFORM_ARM
#define TIMEOUT_VALUE 0
#define OUR_MAGIC_VALUE 1
#elif PLATFORM_ARM64
#define TIMEOUT_VALUE 2
#define OUR_MAGIC_VALUE 3
#endif 

我可以在哪里为每个定义的名称添加注释,以便每个定义都可以访问该注释?

注意:我不能像#ifdef这样定义每个值

// a comment for TIMEOUT_VALUE
#ifdef PLATFORM_ARM
#define TIMEOUT_VALUE 0
#elif PLATFORM_ARM64
#define TIMEOUT_VALUE 2
#endif 

// a comment for OUR_MAGIC_VALUE
#ifdef PLATFORM_ARM
#define OUR_MAGIC_VALUE 1
#elif PLATFORM_ARM64
#define OUR_MAGIC_VALUE 2
#endif

因为我有这样的值的列表和树。

谢谢。

编辑1:例如,我们有6个目标,其中4个支持FEATURE,所以我们这样写:

#if defined(ARM)
#define FEATURE 1
#elif defined(ARM64)
#define FEATURE 0
#elif define(MIPS)
#define FEATURE 1
etc... for other platforms.

然后我在某处有读取此定义的代码:

#if FEATURE
     do something. Note that this part can't be described in a target specific file, because it can have the same implementation for several targets.
#endif 

现在我想有一个地方来大致描述此功能的含义和作用。

您可以定义代理宏,并为最终用户使用的宏写一个注释:

#ifdef PLATFORM_ARM
#define TIMEOUT_VALUE_IMPL 0
#define OUR_MAGIC_VALUE_IMPL 1
#elif PLATFORM_ARM64
#define TIMEOUT_VALUE_IMPL 2
#define OUR_MAGIC_VALUE_IMPL 3
#endif 

// a comment for TIMEOUT_VALUE
#define TIMEOUT_VALUE TIMEOUT_VALUE_IMPL

// a comment for OUR_MAGIC_VALUE
#define OUR_MAGIC_VALUE OUR_MAGIC_VALUE_IMPL

您也可以考虑使用常量而不是宏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM