【发布时间】:2012-02-08 21:11:40
【问题描述】:
#include <stdio.h>
#define QUOTE(str) #str
#define EXPAND_AND_QUOTE(str) QUOTE(str)
#define TEST one-of-a-linux
int main() {
printf(EXPAND_AND_QUOTE(TEST)"\n");
}
我明白了:
1 中的一个
而不是
独一无二的linux
注意“linux”变成了“1”——即数字一
【问题讨论】:
-
这意味着
linux是一个评估为1的宏。 -
如果你使用 gcc,你可能想尝试
-std=c89或-std=c99来避免这个问题。 -
@CharlesBailey:第三方好奇,为什么会有帮助?
-
gcc 预定义了许多用户空间宏,例如
linux和unix,除非您将其置于更严格的标准兼容模式。 -
@CharlesBailey:
-std=c99正是我正在寻找的答案。谢谢。