如何部分禁用C4244

时间:2013-11-09 05:12:47

标签: c++ visual-c++ visual-studio-2012

在Visual C ++ 2012中的代码

double d = 0.5;
float f = d;
int i = f;

向我发出2条警告:

test.cpp(26): warning C4244: 'initializing' : conversion from 'double' to 'float', possible loss of data
test.cpp(27): warning C4244: 'initializing' : conversion from 'float' to 'int', possible loss of data

我想压制我认为垃圾邮件的第一个警告,但保留第二个警告我认为非常有帮助。有可能压制一个并保持另一个吗?人们通常只是压制他们吗?我们有一个错误的错误,我们错误地将双重传递给浮动。但是我们的数学代码会触发双重>浮动警告。

1 个答案:

答案 0 :(得分:5)

请勿禁止旨在防止潜在错误的警告。通过强制转换告诉编译器您知道自己在做什么:

double d = 0.5;
float f = static_cast<float>(d);
int i = static_cast<int>(f);