Препроцессор С++ для Oracle Solaris Studio 12.3 полностью удаляет пробелы при расширении __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
Но препроцессор С++ удаляет пространство между "привет" и "миром":
$ CC vaargs.c -o vaargs && ./vaargs
helloworld
$ CC -V
CC: Sun C++ 5.12 SunOS_i386 2011/11/16