小编Kel*_*ton的帖子

在OSX上,为什么/ usr/bin/cpp不支持宏参数的字符串化,而gcc -E和clang -E呢?

如果我在foo.c中有以下代码

#define P(x) printf("%s\n", #x)

void main() {
  P(3 == 4);
}
Run Code Online (Sandbox Code Playgroud)

调用gcc -E foo.c将输出:

int main() {
  printf("%s\n", "3 == 4");
}
Run Code Online (Sandbox Code Playgroud)

请注意,#运算符已经为宏参数x字符串化了字符串.但是,当我调用/ usr/bin/cpp时,我得到以下内容......但未正确扩展.

int main() {
  printf("%s\n", #3 == 4);
}
Run Code Online (Sandbox Code Playgroud)

c llvm llvm-gcc

2
推荐指数
2
解决办法
891
查看次数

标签 统计

c ×1

llvm ×1

llvm-gcc ×1