thu*_*ish 8 c++ gcc g++ standard-library
我正在尝试自学一些 C++17。
为什么编译器会为以下代码片段抛出错误?
#include <iostream>
#include <vector>
#include <iterator>
int main()
{
std::vector<int> v = { 3, 1, 4 };
std::cout << std::size(v) << '\n';
int a[] = { -5, 10, 15 };
std::cout << std::size(a) << '\n';
}
Run Code Online (Sandbox Code Playgroud)
编译器抛出以下错误
manish@Manish-Tummala:~/c_files$ g++ 6.cpp -o - 6.out
6.cpp: In function ‘int main()’:
6.cpp:8:23: error: ‘size’ is not a member of ‘std’
std::cout << std::size(v) << '\n';
^~~~
6.cpp:8:23: note: suggested alternative: ‘size_t’
std::cout << std::size(v) << '\n';
^~~~
size_t
6.cpp:11:23: error: ‘size’ is not a member of ‘std’
std::cout << std::size(a) << '\n';
^~~~
6.cpp:11:23: note: suggested alternative: ‘size_t’
std::cout << std::size(a) << '\n';
^~~~
size_t
Run Code Online (Sandbox Code Playgroud)
关于 GCC 中的 C++17 支持,请参考:
从 GCC 11.1 开始,C++17 编译模式是默认的。在早期的 GCC 版本中,可以使用命令行参数启用:
要启用 C++17 支持,请将命令行参数添加
-std=c++17到g++命令行。或者,要启用除 C++17 功能之外的 GNU 扩展,请添加-std=gnu++17.
请注意,对于 GCC 9.1 之前的 GCC 版本,C++ 库 ABI 仍然被认为是不稳定的,因此如果您使用较早的编译器构建和链接您的应用程序,它可能无法与不同的 libstdc++ 运行时库版本(来自不同的 GCC版本,例如由操作系统升级引入)。
| 归档时间: |
|
| 查看次数: |
3710 次 |
| 最近记录: |