繁体   English   中英

C ++编译器之间的差异

[英]Differences between C++ compilers

在今天进行数据结构分配工作时,我遇到了一些我必须解决的错误,这些错误对我来说是很新的。 例如,以下内容:

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 ++中却没有。 即使Visual Studio希望我使用nullptr,我也必须将nullptr更改为0!

使用学校的编译器发生的另一起事件给我以下消息:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM