DFD*_*ark 2 c++ gcc std ubuntu-18.04
我正在尝试学习 c++17 的新功能/噱头,但后来我到了 std::byte 并且由于某种未知的原因我似乎无法编译甚至最基本的“hello world”类型程序方式。
整个程序:
#include <cstddef>
int main(int argc, char* argv[])
{
std::byte byte;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译命令:
g++ ./main.cpp
Run Code Online (Sandbox Code Playgroud)
但输出总是:
./main.cpp: In function ‘int main(int, char**)’:
./main.cpp:4:10: error: ‘byte’ is not a member of ‘std’
std::byte byte;
Run Code Online (Sandbox Code Playgroud)
我使用 gcc 7.4.0 在 Ubuntu 18.04 上工作。我检查了“/usr/include/c++/7.4.0/”,头文件 cstddef 在那里,字节似乎已定义。
我也尝试过使用 clang:
clang++ ./main.cpp
Run Code Online (Sandbox Code Playgroud)
但结果是一样的。在这一点上,我只能认为 cstddef 已损坏/被窃听。有什么解决办法吗?
作为???????在评论中指出我缺少 c++17 编译标志。正确的编译命令:
g++ -std=c++17 ./main.cpp
Run Code Online (Sandbox Code Playgroud)