c - 为什么这个C字符串化宏在扩展时会损坏?

标签 c macros stringify

#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");
}

我得到:

一一

而不是

一个Linux

请注意,“linux”变为“1”-即数字1

最佳答案

显然在某处有#define linux 1(或-Dlinux=1)。

关于c - 为什么这个C字符串化宏在扩展时会损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8837469/

相关文章:

c - 尝试将变量分配为 C 中数组的长度

scala - 我在哪里可以了解如何为 Scala 宏构建 AST?

objective-c - c中的模拟器/生成的switch语句范围

javascript - JSON.stringify 似乎无法按预期工作

javascript - 将字符串转换为 JSON

iphone - 需要一些指点

C 头文件错误 : expected identifier or ‘(’ before ‘[’ token

c - 为什么当我想在下面的代码中创建一个新的数据集时,当我使用真正的算法时它会出错

c++ - 过度依赖宏

c# - 当我不关心字典的类型时,如何将字典作为参数传递?