在目前阶段,为什么大多数现代C ++编译器仅支持有限的C ++ 0x功能,而Clang / GCC支持所有这些功能?

时间:2013-09-02 20:41:35

标签: c++ visual-c++ c++11 compiler-construction clang

我是C ++ 11的新手,发现找到使代码与Clang和Visual C ++兼容的替代方法是一项艰巨而乏味的工作。

这个事实背后的原因是什么?这种技术有困难吗?与旧的非标准语言扩展兼容?不同的重点?还是其他任何可能性?

参考页面:https://wiki.apache.org/stdcxx/C++0xCompilerSupport

2 个答案:

答案 0 :(得分:4)

  

为什么大多数现代C ++编译器仅支持有限的C ++ 0x功能,而Clang支持所有这些功能?

clang的设计要比大多数其他主要编译器晚得多,并且其构建方式使得更容易支持某些现代功能。许多其他编译器,如MSVC和GCC,支持许多其他目标而不是clang,并且拥有大量遗留代码库。随着时间的推移,对这些编译器的更改往往会变得更慢。

  

并发现找到替代方法使我的代码与Clang和Visual C ++兼容是一件困难而乏味的工作。

一般情况下,我发现如果您坚持使用子集(在本例中为Visual C ++编写),那么只要您避免使用Microsoft语言扩展,clang通常会支持代码而不进行任何更改。向另一个方向移动通常更具挑战性。

答案 1 :(得分:2)

因为视觉上的变化似乎需要时间,就像在GCC中一样。海湾合作委员会几乎支持一切。

但这也是一个优先问题。实际上,GCC在CLang正式之前已经完成了完整的C ++ 11(即使这只是因为CLang正在等待正式发布日期并准备好一切)。

Visual花费更多时间,因为他们也花费精力使IDE更好。他们的开发人员较少。