/* n_token.C: special pp-token in C++ */ #define str( a) xstr( a) #define xstr( a) # a #define paste( a, b) a ## b /* token.1: '::' is a token in C++, although illegal token sequence in C */ /* "::"; */ str( paste( :, :)); /* token.2: 'and', 'or', 'not', etc. are tokens in C++, although in C these are macros defined by */ /* "xor"; */ #if 1 and 2 or not 3 str( xor); #endif /* { dg-do preprocess } { dg-options "-std=c++98" } { dg-final { if ![file exist n_token.i] { return } } } { dg-final { if \{ [grep n_token.i "\"::\""] != "" \} \{ } } { dg-final { if \{ [grep n_token.i "\"xor\""] != "" \} \{ } } { dg-final { return \} \} } } { dg-final { fail "n_token.C: C++ tokens" } } */