0

有没有办法在 gcc 中激活所有有 int - float 操作的警告?我有一个包含许多算术运算的旧代码,我注意到有很多这样的情况:

int a, b, c;
double x, y, z;
y = a + x*b + c/z;

用我 ide 的“搜索”工具跟踪所有这些情况并不容易,因为代码真的很长、很神秘、很复杂(前面的例子只是为了找出问题所在)!所以,我想知道 gcc 中是否有一个“-Wsomenthing”可以帮助我完成这项苦差事。

添加

在 -Wconversion 处于活动状态时,我没有收到任何警告

4

1 回答 1

3

可能没有这种方法,但您的问题是 GCC 扩展或插件的典型案例。

您可以使用 C 中痛苦编码的插件扩展 GCC(4.6 版或更高版本)。您可以更轻松地使用 MELT 扩展 GCC,MELT是一种用于扩展 GCC 的高级域特定语言。

GCC 4.5 可以通过插件进行扩展,但插件支持在 4.5 中较差,在 4.6 或 4.7 或即将发布的 4.8 中更好

如果您使用 MELT,您可能想使用它,walk_gimple_seq_unique_tree然后将当前 gimple 与gimple_assign_cast.

编写这样的 MELT 扩展可能会花费您一天以上的时间;问题是 GCC 很复杂,您需要部分了解其内部表示(Gimple)及其传递机制。如果您有一个大型代码库,自定义编译器仍然值得付出努力。

在gcc-melt@googlegroups.com上询问 MELT 特定问题

于 2013-02-10T11:25:58.573 回答