首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么-std=c++98标志有时不起作用?

为什么-std=c++98标志有时不起作用?
EN

Stack Overflow用户
提问于 2022-03-22 16:57:02
回答 1查看 235关注 0票数 3

情况如下:

我想要创建一个简单的c++程序,但它必须只使用C++98函数。

我正在使用Ubuntu 20.04.4 LTS

我使用c++作为编译器

我使用以下标志进行编译:-Wall -Werror -Wextra -std=c++98 -pedantic-errors

现在,如果我使用来自<string>的函数<string>,编译将如预期的那样失败,因为stoi()是C++11,正如您可以看到的这里

但我无法理解的奇怪行为来了:

使用round或来自<cmath>roundf不会触发-std=c++98标志,尽管根据我所看到的这里,所有round函数都是C++11。

有什么好的解释来解释为什么会这样吗?

编辑:

正如杰拉姆西所提到的,有可能使用round的标准C-函数,因此-std=c++98标志对此没有任何影响。有人能证实这个理论吗?

EN

回答 1

Stack Overflow用户

发布于 2022-03-22 17:01:57

没有什么能阻止编译器实现任何预先标准的东西。例如,Visual 2010不是一个标准的C++11编译器,但是实现了(在某种程度上)lambda。

对C++98标志的唯一期望是实现了C++98的所有特性(希望如此)。除此之外,编译器已经实现了一个预标准的C++11/14/17等“奖励”。

当然,这些奖金不是官方的,而且大多数都是基于未来C++标准草案。当11/14/17等的C++标准出现后,在这些旧编译器中引入的许多特性要么是不标准的,要么无法正常工作,或者缺少。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71576001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档