【发布时间】:2009-04-21 21:54:25
【问题描述】:
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 中生成这些警告?
【问题讨论】:
标签: c++ gcc visual-studio-2005