【发布时间】:2012-11-27 19:37:33
【问题描述】:
考虑以下代码片段:
long long someVar64 = 0LL;
int someVar32 = someVar64;
如果不明显,这里有一个潜在的错误,即 64 位值被分配给 32 位值,导致位丢失。在这种情况下,这很好,因为我们不关心 0 的高位,但如果我更改常量,我可以很容易地创建一个错误。
为什么 GCC (4.4.3) 不为此代码生成警告?我记得以前的旧版本。
【问题讨论】:
-
您是否尝试过明确启用此警告
-Wconversion? -
您没有指定使用什么标志来调用 GCC,但至少您应该使用
-Wall作为起点。
标签: gcc