gcc 是否有一个标志,使得从 long 到 short 的转换会生成关于可能丢失数据的警告?
我正在开发一个为 Visual Studio (2005) 和 GCC 4.2(对于 Mac OS X)编译的 C++ 应用程序。
Visual Studio 输出的警告遵循以下模式:
: warning C4244: 'argument' : conversion from 'long' to 'short', possible loss of data
我试过 -Wconversion,但这不是我要找的。到目前为止,我唯一能找到的是一个实验标志 -Wcoercion,它与 GCC 4.3 相关联(我不确定我们是否想投资它)。
2009 年 4 月 22 日 @ 11:00 EST 编辑:澄清一下,我想看到那个警告。我们有代码,我们想知道何时会发生数据丢失。如果我有代码:
unsigned long value1 = LONG_MAX;
std::cout << "value1: " << value1 << std::endl;
unsigned short value2 = value1;
std::cout << "value2: " << value2 << std::endl;
我得到了这个预期结果:
<强>
值1:2147483647
值 2:65535
在我们的代码中,我们有特殊的断言来执行强制转换,并在执行的代码会导致数据丢失时警告我们。我们使用 Visual Studio 的警告在我们的大型代码库中找到了这些地方。
有什么方法可以在 gcc 4.2 中生成这些警告?
最佳答案
此功能在 GCC 4.2 中不支持,但已在 GCC 4.3 中添加。 Wiki page explaining it .
感谢 schnaader 和 Evan Teran 提供的链接,使我到达那里。
关于c++ - 是否有类似于 Visual Studio 关于可能丢失数据的 gcc 4.2 警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/774802/