c++ - 是否有类似于 Visual Studio 关于可能丢失数据的 gcc 4.2 警告?

标签 c++ gcc visual-studio-2005

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/

相关文章:

c++ - 在尝试使用递归查找集合的子集总数时,出现段错误

c++ - 什么是 "Portable C++"?

c - gcc 生成 memcpy 时 source == dest?

c# - XmlDocument.Load(xml) 从 XmlSerializer 序列化代码生成“无根元素”错误

c++ - 如何绘制像阴影按钮一样的 Windows 7 任务栏

c++ - 在 C++ 中使用字符指针从字符数组中读取字节

具有变量初始化的 C++ 构造函数

C 迭代到一个非常大的数字 - 关于 unsigned int 的编译器警告

c++ - FORTIFY_SOURCE 和 Og 优化级别

c# - 如何避免在安装过程中在 C# 安装项目中执行关联的可执行文件