加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 用于隐式转换的gcc警告标志

发布时间:2020-12-16 05:52:56 所属栏目:百科 来源:网络整理
导读:我最近在下一个类似的上下文中出现了一个错误: double getSomeValue(){ return 4.0;}...std::string str;str = getSomeValue(); 正如你可以看到的,很容易发现问题,但是在一个大的代码库中,getSomeValue()与调用代码不在同一个文件中,可能很难将这个双重标记
我最近在下一个类似的上下文中出现了一个错误:
double getSomeValue()
{
    return 4.0;
}
...
std::string str;
str = getSomeValue();

正如你可以看到的,很容易发现问题,但是在一个大的代码库中,getSomeValue()与调用代码不在同一个文件中,可能很难将这个双重标记发送到std :: string静默转换. GCC使用-Wall -Wextra -Werror(这里的示例输出,我不知道使用了什么警告标志)编译此代码:http://ideone.com/BTXBFk).

如何强制GCC对这些危险的隐性转换发出警告?我尝试过 – 转换,但它是非常严格的,它导致错误在大多数包含的标题为常见的情况,如unsigned – 1.是否有较弱版本的-Wconversion?

解决方法

您可以使用-Wfloat-conversion标志,或更广泛的-Wconversion.

但是,请注意,使用C 11均匀初始化括号语法,您将收到一个“开箱即用”警告,而不使用-Wconversion标志;例如.:

#include <string>

double getSomeValue() {
    return 4.0;
}

int main() {   
    std::string str{ getSomeValue() }; // C++11 brace-init
}

06001

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读