Oracle Solaris Studio 12.3 的 C++ 预处理器在扩展__VA_ARGS__
.
任何人都可以在他们的系统上确认这种行为吗?这是一个已知的编译器错误吗?有没有解决这个问题的方法?
为了说明,这是一个简单的测试程序,vaargs.c
:
#include <stdio.h>
#define PRINT(...) printf("%s\n", #__VA_ARGS__)
int main()
{
PRINT(hello world);
return 0;
}
C 预处理器按预期工作:
$ cc vaargs.c -o vaargs && ./vaargs
hello world
$ cc -V
cc: Sun C 5.12 SunOS_i386 2011/11/16
但是 C++ 预处理器删除了“hello”和“world”之间的空格:
$ CC vaargs.c -o vaargs && ./vaargs
helloworld
$ CC -V
CC: Sun C++ 5.12 SunOS_i386 2011/11/16