基于另一个已定义符号的条件#define
Conditional #define based on another defined symbol
是否有可能在C/c++中嵌套预处理器#define
(在本例中为#ifdef
)?我希望能够这样做:
#ifdef _DEBUG_
#define __DEV_MODE_VERBOSE__ // Defined in DEBUG mode only
#endif
这个想法是" __DEV_MODE_VERBOSE__
"通常会被注释掉。当没有注释时,我可以使用如下代码:
#ifdef __DEV_MODE_VERBOSE__
int test = (5 * GetTickCount()); // Not reached!
#endif // __DEV_MODE_VERBOSE__
记录通过我的通信链接发送和接收的命令。如果#define
不小心没有注释,那么日志记录将不会发生在发布(因此也不会发生在生产)代码中。
当我尝试如上所述定义"__DEV_MODE_VERBOSE__
"时,它没有定义,所以我不确定语法是否错误,或者问题是否更根本。符号是定义的,如果我不嵌套在" #ifdef _DEBUG_
"和它的" #endif
"之间。
N3337 [global.names]:
某些名称和函数签名的集合总是保留给实现:- 每个包含双下划线
__
或以下划线后跟大写字母开头的名称都保留给实现以供任意使用。—每个以下划线开头的名称都保留给实现,以用作控件中的名称全局名称空间。
宏包含双下划线,因此保留给实现使用。将其更改为有效名称应该可以解决您的问题。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 在没有太多条件句的情况下,我如何避免被零除
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 基于多个条件处理地图中的所有元素
- 将无符号char*转换为std::istream*C++
- 条件constexpr函数
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 无论条件是否为true,if总是在c++中执行
- vscode g++链路故障:体系结构x86_64的未定义符号
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 基于模板值的条件变量
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 而无符号整数条件的循环
- 多个条件编译符号
- 如何根据行总数的条件在犰狳中删除 SpMat<无符号 int> 的行?
- 在加载时有条件地链接到符号
- 基于另一个已定义符号的条件#define
- 条件运算符:从'int '转换为"无符号字符",可能会丢失数据