gpt4 book ai didi

c++ - 为什么 g++ (4.8.2) 默认使用 c++0x?

转载 作者:太空宇宙 更新时间:2023-11-04 16:09:08 25 4
gpt4 key购买 nike

我有一段代码使用自 c++11 起支持的 std::unique_ptr。

#include <memory>

int main() {
std::unique_ptr<int> p_int(new int(3));
return 0;
}

我可以构建这段代码,但我仍然感到困惑。因为我的 g++ 版本是 4.8.2,它支持 c++11。 g++ 默认使用 c++0x 的原因是什么?我应该如何将 c++11 设置为默认值?现在我正在使用 cmake,所以也许我应该在 CMakeLists.txt 中设置 c++11..

$ which g++   
/usr/bin/g++
$ g++ --version
g++ (20140812 (SCEL u2.0.0.0)) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ g++ main.cc
main.cc: In function ‘int main()’:
main.cc:4:2: error: ‘unique_ptr’ is not a member of ‘std’
std::unique_ptr<int> p_int(new int(3));
^
main.cc:4:18: error: expected primary-expression before ‘int’
std::unique_ptr<int> p_int(new int(3));
^
main.cc:4:18: error: expected ‘;’ before ‘int’
$ g++ main.cc -std=c++11 // this is ok

虽然我的问题对于它的构建不是那么重要,但我想澄清一下我的想法!任何帮助将不胜感激。谢谢!

最佳答案

g++ 默认使用 c++0x 的原因是什么”:It doesn't . c++0xc++11

工作草案的名称

g++ 默认使用 -std=gnu++98。这是 c++98,在其之上添加了 GNU 扩展。由于这长期以来一直是默认设置,因此在可预见的 future 它可能会保持默认设置,以避免破坏使用它构建的代码。

如果你想使用 c++11 作为默认值,你可以创建一个别名,例如在 bash 中:

alias g++="g++ -std=c++11"

关于c++ - 为什么 g++ (4.8.2) 默认使用 c++0x?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30656998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com