以下代码在 g++、clang 和 Visual Studio 上编译:
#define HEX(hex_) 0x##hex_
int main()
{
return HEX(BadC0de);
}
Run Code Online (Sandbox Code Playgroud)
与此修改一样,使用 C++14 数字分隔符:
return HEX(1'Bad'C0de);
Run Code Online (Sandbox Code Playgroud)
但这不能在 g++ 或 clang 上编译(它可以在 Visual Studio 上运行):
#define HEX(hex_) 0x##hex_
int main()
{
return HEX(A'Bad'C0de);
}
Run Code Online (Sandbox Code Playgroud)
g++ 输出:
<source>:4:1: warning: multi-character character constant [-Wmultichar]
4 | return HEX(A'Bad'C0de);
| ^
<source>: In function 'int main()':
<source>:4:17: error: expected ';' before user-defined character literal
4 | return HEX(A'Bad'C0de);
| ^~~~~~~~~
<source>:1:25: note: in definition of macro 'HEX'
1 | #define …Run Code Online (Sandbox Code Playgroud)