【问题标题】:Can't disable gcc warning - make pointer from integer without a cast无法禁用 gcc 警告 - 从整数生成指针而不进行强制转换
【发布时间】:2018-11-05 02:59:22
【问题描述】:

尝试了很多方法,例如:

-fsyntax-only
-Wno-format

仍然收到此警告:

xxxxx passing argument x of xxxx make pointer from integer without a cast

我想以任何方式禁用此警告。

////////////////////

更新:

为了遵守这里的规则,我提供了具体的代码:

这是我正在测试的源代码:

https://github.com/vladermolaev/jam2ftdi

Visual Studio 可以构建成功。

但是,我想在 Linux 中测试它,我在 Linux 中构建了它。

我看到了这个问题中描述的错误日志。

这里是问题代码,问题是第三个输入参数,unsinged char *tdo。

因为在本项目中调用该函数时,传入的参数是int,而不是unsinged char*

https://github.com/vladermolaev/jam2ftdi/blob/master/FTDI_API.h#L5

int FTDI_WriteTMSandTDIandReadTDO(const unsigned char tms, const unsigned char tdi, unsigned char *tdo);

因此,我已经知道它是在 Windows 操作系统中构建的,我不想在 linux 平台上到处更改代码。

希望这很清楚,请解锁此问题。

谢谢。

/////////////////////

更新:

是哪一行导致了这个错误:

https://github.com/vladermolaev/jam2ftdi/blob/9af9c7a055707b178e5aa91ae4447686256a4790/JAMSTUB.C#L328

tdo = FTDI_WriteTMSandTDIandReadTDO(tms, tdi, read_tdo);

在这个项目中的用法,read_tdo 是产生这个编译警告的 int。

【问题讨论】:

  • 修复它。向我们展示代码,我们会提供帮助。警告的存在是有充分理由的;禁用它们很少是一个好主意
  • 禁用警告是个坏主意。只需修复代码。 (添加演员表是最简单的解决方法,但可能不是最好的解决方法。)
  • 而且...如果您必须添加演员表来绕过警告(打印指针时的 void* 除外),那么您做错了。
  • 我通过补丁修复了代码,因为我知道代码工作正常,我正在移植它,我不想再到处打补丁,我只想知道如何抑制它
  • 是的,我知道如何解决它。我想知道如何在 gcc(linux) 中抑制此消息,因为我可以在 Visual Studio 中构建相同的代码。

标签: linux gcc gcc-warning


【解决方案1】:

为 gcc 添加此参数如下:

-Wno-int-to-pointer-cast

它解决了这个问题。

【讨论】:

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