11

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
4

1 に答える 1