【问题标题】:Ignoring Werror for one specific file忽略一个特定文件的 Werror
【发布时间】:2017-06-23 14:50:28
【问题描述】:

错误 #1696:隐式指针转换将指向类型的字节顺序从“bigendian int”更改为“int” if((processid = forkpty{{int*)&(execData->mFd)

我有多个文件正在由单个 makefile 编译。其中一个文件说xyz.c是给我字节顺序错误我试图用这个https://software.intel.com/en-us/node/628915来解决这些错误

但是这个很粘。不管我做什么,它都没有消失。

尝试次数:

1) 通过https://software.intel.com/en-us/node/628915 但没有任何帮助。 2)如果我把这个文件说xyz.c从makefile中取出并注释它,那么它给了我对许多在其他地方使用的函数的未定义引用。所以这显然不是一个解决方案。

需要忽略这个警告,所以我 想知道是否有办法为在 Makefile 中编译的特定文件生成 Wnoerror。

【问题讨论】:

  • 你看到答案了吗here ?...(特别是this answer,我认为最能解决你的问题)
  • 请注意,无论您是否忽略 -Werror,代码 (if((processid = forkpty{{int*)&(execData->mFd)) 都不会编译;它是无效的,因为在函数调用和强制转换的开头有 { 左大括号,以及三个缺少的 ) 右括号(括号)。假设 { 更改为 (,则为 3。
  • @ryyker 你找到我了,兄弟!谢谢..
  • @ryyker 但是这个 isystem 到底在做什么而不是在这里使用 I?
  • Here is another answer discussing same thing。此时您只需阅读文档,然后进行实验。 Google GCC 编译器(或链接器)选项。

标签: c gcc makefile


【解决方案1】:

有两种可能的选择,

  1. 在Makefile中为特定文件创建规则,编译时不要传递-Werror

  2. 使用this answer 中描述的内容。

    #pragma GCC diagnostic ignored "-W(your specific warning)"
    

    如果愿意,您可以稍后重新启用警告。

【讨论】:

  • #pragma GCC diagnostic push#pragma GCC diagnostic pop 可用于本地化 #pragma GCC diagnostic ignored "-Wwhatever" 所做的更改。
  • 嗨@Ihrob Al Asimi,它说第二个解决方案无法识别的编译指示,
猜你喜欢
  • 2011-03-21
  • 2011-08-01
  • 2018-05-18
  • 1970-01-01
  • 1970-01-01
  • 2018-06-17
  • 2021-11-13
  • 2021-05-13
  • 2019-10-18
相关资源
最近更新 更多