gpt4 book ai didi

c++ - C++ 编译器之间的差异

转载 作者:行者123 更新时间:2023-11-28 00:23:16 27 4
gpt4 key购买 nike

今天在完成我的数据结构作业时,我遇到了一些我必须解决的错误,这些错误对我来说是非常新的。例如,以下内容:

struct Node
{
// data and stuff

Node(const T& d = T{}, Node * const p = nullptr,
Node * const n = nullptr, unsigned int f = 0)
: data(d), prev(p), next(n), freq(f) {}

// other stuff
};

这在 visual studio 中运行得很好,但在 g++ 中却不行。我不得不将 nullptr 更改为 0,即使 visual studio 希望我使用 nullptr!

另一个使用学校编译器的事件给了我以下信息:

warning:  extended initializer lists only available with -std=c++0x

所以我很自然地继续将其添加到我的 makefile 中。

这让我想知道,考虑到我将来要编写更复杂的程序,我多久会看到编译器的简单差异导致的错误? visual studio 不向后兼容旧的编译器吗?我可以更改设置吗?只是寻找在使用各种编译器时我应该注意的事情的一般知识。

最佳答案

g++ 将默认以 C++03 模式编译,这是 C++11 之前的 C++ 标准。要告诉 g++ 您的代码实际上是 C++11 代码,您必须使用 -std=c++11 编译器开关。例如:

g++ -std=c++11 -o test test.cc

关于c++ - C++ 编译器之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26411519/

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