Il preprocessore C++ di Oracle Solaris Studio 12.3 rimuove completamente gli spazi durante l'espansione __VA_ARGS__
.Il preprocessore C++ rimuove gli spazi bianchi nelle chiamate a macro variadic (Solaris Studio 12.3)
Qualcuno può confermare questo comportamento sul proprio sistema? È un bug del compilatore noto? Esistono soluzioni alternative per questo problema?
Per illustrare, ecco un semplice programma di test, vaargs.c
:
#include <stdio.h>
#define PRINT(...) printf("%s\n", #__VA_ARGS__)
int main()
{
PRINT(hello world);
return 0;
}
Il preprocessore C funziona come previsto:
$ cc vaargs.c -o vaargs && ./vaargs
hello world
$ cc -V
cc: Sun C 5.12 SunOS_i386 2011/11/16
Ma il preprocessore C++ rimuove lo spazio tra "ciao" e " world ":
$ CC vaargs.c -o vaargs && ./vaargs
helloworld
$ CC -V
CC: Sun C++ 5.12 SunOS_i386 2011/11/16
Sia clang (3.5) che GCC (4.9.1) restituiscono 'ciao mondo' (per C e C++) per me. Non ho Solaris Studio, quindi non posso confermarlo. – Cornstalks
Sembra essere un problema con il preprocessore di Solaris Studio 12.3 C++. Il problema non si verifica con la versione precedente (12.2). – Claudio