作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我们有一个 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
现在我想有一个地方来概括地描述这个 FEATURE 的含义和作用。
最佳答案
您可以定义一个代理宏并为最终用户使用的宏写一条注释:
#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
您也可以考虑使用常量而不是宏。
关于c++ - 如何在一个地方注释 #ifdef 下的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53184444/
我是一名优秀的程序员,十分优秀!