【发布时间】:2016-11-14 17:35:55
【问题描述】:
我的 C++03 项目需要升级到 C++11,我可以保证至少在我想使用的所有 GCC 中都提供对它的实验性支持。
但是,这可能是-std=c++0x,也可能是来自较新 GCC 的实际 -std=c++11。有一天它会是-std=c++14(当 CentOS 赶上来时……)。
如何形成一个 GNU Makefile,将“最佳”标志添加到 CXXFLAGS,这取决于哪个会成功?
我可以说“好吧,我最早使用的 GCC 仍然没有生产就绪的 C++11 支持,所以我应该坚持使用 C++03”,但是嗯。
【问题讨论】:
-
-std=c++0x在较新的版本中工作,作为-std=c++11的同义词,所以你可以使用它 -
尊重将 C++03 迁移到您的开发流中。
-
@Bathsheba:我们花了很长时间!当他们认为这只是一个轻弹开关的情况时,管理层的支持很容易哈哈
-
@JonathanWakely:.....哦。不过,当我可以访问 C++14 编译器时,我希望能够继续这种趋势,所以......我希望我的 Makefile 能够针对最新可用的受支持语言标准进行编译,然后(我猜)使用使代码本身“可移植”的宏。我稍微调整了措辞。
-
我想知道你从中获得了什么。您的代码要么需要
-std=c++14,要么不需要。在第一种情况下,旧的 GCC 版本已经过时;在后一种情况下,您可以使用-std=c++11。也就是说,GCC 确实需要-std=c++now并将其作为默认值。
标签: c++ c++11 gcc c++14 gnu-make