【问题标题】:Make warning "makes pointer from integer without a cast" as error将警告“从整数生成指针而不进行强制转换”作为错误
【发布时间】:2012-09-22 14:02:30
【问题描述】:

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

我已经尝试了来自

的所有警告
gcc -Q --help=warnings | grep enabled

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

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

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

【问题讨论】:

  • 是时候切换到clang了!

标签: gcc gcc-warning


【解决方案1】:

我也想知道,所以我检查了 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"));

看到0WAIT_FOR_ASSIGNMENT 的第二个参数了吗?通常,这是诊断选项之一的标志。但是在这种情况下它是零,所以我担心这意味着这个错误不能被具体地做一个错误。

【讨论】:

    【解决方案2】:

    正如 gcc 手册所述

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-07-12
      • 2021-01-19
      • 1970-01-01
      • 2023-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      相关资源
      最近更新 更多