【发布时间】:2019-07-01 22:57:57
【问题描述】:
我正在尝试学习 c++17 的新功能/噱头,但后来我到了 std::byte 并且由于某种未知原因,我似乎无法编译最基本的“hello world”用类型键入程序。
整个程序:
#include <cstddef>
int main(int argc, char* argv[])
{
std::byte byte;
return 0;
}
编译命令:
g++ ./main.cpp
但输出总是:
./main.cpp: In function ‘int main(int, char**)’:
./main.cpp:4:10: error: ‘byte’ is not a member of ‘std’
std::byte byte;
我使用 gcc 7.4.0 在 Ubuntu 18.04 上工作。我已经检查了“/usr/include/c++/7.4.0/”并且头文件 cstddef 在那里并且似乎定义了字节。
我也试过用clang:
clang++ ./main.cpp
但结果是一样的。在这一点上,我只能认为 cstddef 已损坏/错误。有什么解决办法吗?
【问题讨论】:
-
我认为需要c++17
-
我做的一个尝试是使用 cmake(实际上是第一个)和 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS ON)
-
@DFDark 你试过
g++ -std=c++17 ./main.cpp了吗? -
现在我做到了,它的工作似乎我忽略了一些阅读。之前评论中的 CMake 也缺少 target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)。如果你把它写出来作为答案,我会标记它是正确的。
标签: c++ gcc std ubuntu-18.04