小编bar*_*bas的帖子

为什么这个简单的代码不能一致地编译?

以下代码在 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)

c++ g++ visual-c++ clang++ c++14

3
推荐指数
1
解决办法
178
查看次数

标签 统计

c++ ×1

c++14 ×1

clang++ ×1

g++ ×1

visual-c++ ×1