C++ 二进制文字

C++ Binary Literal

我知道 C++ 中的 Binary Literal 是从 C++14.

标准化而来的

然而,虽然我将 std 固定为 c++11,但效果很好。因为实际上,我预计会出现错误。以下是我预计会出现错误的代码。

int main(){
  int a = 0b1010; // an error is expected
  std::cout << a << std::endl;
}

此外,我已经使用以下命令编译并执行了上述文件。

g++ -std=c++11 -Wall main.cpp -o runfile
./runfile

预期的结果没有出来是什么原因?我有什么地方做错了吗?

早在 C++14 对其进行标准化之前,二进制文字就已成为 GCC 中的编译器扩展。您可以使用 -pedantic 进行编译以警告扩展,并使用 -pedantic-errors 将这些特定警告提升为错误:

<source>:3:11: error: binary constants are a C++14 feature or GCC extension
    3 |   int a = 0b1010; // an error is expected
      |           ^~~~~~