我有以下代码片段:
#ifdef DO_LOG
#define log(p) record(p)
#else
#define log(p)
#endif
void record(char *data){
.....
.....
}
Run Code Online (Sandbox Code Playgroud)
现在如果我调用log("hello world")我的代码并且DO_LOG没有定义,那么该行是否会被编译,换句话说它会占用字符串"hello world"的内存吗?
PS程序中有很多记录调用,它对内存敏感,所以有没有其他方法有条件地编译,所以它只依赖于#define DO_LOG?
unw*_*ind 14
通过检查生成的二进制文件,这对于自己进行验证应该是微不足道的.
我会说"不",因为表达式完全消失,编译器永远不会看到字符串(它被预处理器的宏扩展删除).
| 归档时间: |
|
| 查看次数: |
1595 次 |
| 最近记录: |