C++ 言語 マクロ講座 可変個数引数編 ― 2011年01月20日 17時27分06秒
実験には C 言語 マクロ講座 可変個数引数編 と同じ物を使う。
% cat vaargs.cpp
#define xprintf(...) printf(__VA_ARGS__)
xprintf("Hello %s\n", "World");
xprintf("%s %s\n", "Hello", "World");
幾つかのプラットフォームで試す。
sun % CC -E vaargs.cpp
#1 "vaargs.cpp"
#3 "vaargs.cpp"
printf ( "Hello %s\n" , "World" ) ;
printf ( "%s %s\n" , "Hello" , "World" ) ;
freebsd % g++ -E vaargs.cpp
# 1 "vaargs.cpp"
# 1 ""
# 1 ""
# 1 "vaargs.cpp"
printf("Hello %s\n", "World");
printf("%s %s\n", "Hello", "World");
hp % aCC -E vaargs.cpp
#line 1 "vaargs.cpp"
printf("Hello %s\n", "World");
printf("%s %s\n", "Hello", "World");
ibm % xlC_r -E vaargs.cpp
#line 3 "vaargs.cpp"
printf("Hello %s\n", "World");
printf("%s %s\n", "Hello", "World");
FreeBSD, Solaris, IBM, HP で __VA_ARGS__ は展開されている。
最近のコメント