4

我正在尝试将警告“警告:传递 'func' 的参数 1 使指针从不进行强制转换的整数”作为错误,但找不到选项的名称。

我已经尝试了所有警告

gcc -Q --help=warnings | grep enabled

尝试执行 -Werror=XXXX 和列表中的选项名称,

甚至尝试禁用警告-Wno-XXXX,但无法禁用。

有人知道这个特定警告的选项吗?

4

2 回答 2

2

我也想知道它,所以我检查了 gcc 源代码(4.8.1)。在 c-typeck.c 中有以下代码发出警告:

    WARN_FOR_ASSIGNMENT (location, 0,
                         G_("passing argument %d of %qE makes "
                            "pointer from integer without a cast"),
                         G_("assignment makes pointer from integer "
                            "without a cast"),
                         G_("initialization makes pointer from "
                            "integer without a cast"),
                         G_("return makes pointer from integer "
                            "without a cast"));

看到0第二个参数WAIT_FOR_ASSIGNMENT? 通常,这是诊断选项之一的标志。然而,在这种情况下它是零,所以我担心这意味着错误不能被专门制作为错误。

于 2013-07-29T20:14:09.950 回答
0

正如 gcc 手册所述

-Werror= 将指定的警告变成错误。附加了警告的说明符,例如 -Werror=switch 将 -Wswitch 控制的警告转换为错误。此开关采用否定形式,用于对特定警告否定 -Werror,例如 -Wno-error=switch 使 -Wswitch 警告不是错误,即使 -Werror 生效。您可以使用 -fdiagnostics-show-option 选项使用控制它的选项修改每个可控警告,以确定使用此选项的内容。

应使用 -fdiagnostics-show-option 开关报告任何受支持的选项。

如果你幸运的话,你的 gcc 版本可能会让你有选择地将警告变成错误的可能性。我使用的版本肯定没有,所以要么使用

-Werror 将所有警告变成错误。

或者

-pedantic-errors 与 -pedantic 类似,只是产生错误而不是警告。

可能是让 gcc 发出错误的唯一可能性。

于 2013-02-09T12:02:18.517 回答