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 }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |