Cla*_*dio 11 c++ solaris c-preprocessor variadic-macros solaris-studio
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;
}
Run Code Online (Sandbox Code Playgroud)
C预处理器按预期工作:
$ cc vaargs.c -o vaargs && ./vaargs
hello world
$ cc -V
cc: Sun C 5.12 SunOS_i386 2011/11/16
Run Code Online (Sandbox Code Playgroud)
但是C++预处理器删除了"hello"和"world"之间的空格:
$ CC vaargs.c -o vaargs && ./vaargs
helloworld
$ CC -V
CC: Sun C++ 5.12 SunOS_i386 2011/11/16
Run Code Online (Sandbox Code Playgroud)