在我的GCC代码中,我收到了许多这两种类型的警告。
我知道通常情况下,这两个警告表示代码出现了严重问题。但在我的情况下,无论发生在哪里,我都非常清楚自己在做什么,并且我知道可以安全地忽略这些警告。(是的,我确定)
但现在我的代码已经变得如此庞大,以至于这些警告掩盖了其他任何东西,实际上隐藏了可能导致糟糕错误的潜在警告。所以我决定禁用它们。很快我意识到我不知道该怎么做。我的gcc版本是4.4.1,我知道可以使用:
我想忽略任何警告。但是在我找到的唯一一份GCC警告列表中,这个列表并没有包含这两个警告。我已经逐一选取他们并将其转化为错误以查看编译过程中是否由于不兼容指针类型而停止,但是都无济于事,如下所示。
所以,问题是,有没有人知道这些警告的名称,以便我可以实际地抑制它们?
编辑
由于评论中的讨论,我必须澄清一个误解,这使我相信我必须抑制这些警告。我认为执行指向结构体的指针之间的显式强制转换会涉及一些成本(无论多么微小)。
所以我的想法,我现在意识到是错误的,因为我的程序正在不同的平台上工作并已经工作了很长时间,为什么要添加工作来满足编译器呢?
好吧,我现在意识到了,并在这里写下来,以防其他人碰巧遇到这个主题并有相同的思路。执行指针的显式类型转换没有任何成本,而优点是:
编译器停止用这些警告批评你
其他人可以知道您在那里故意进行了转换,并且没有犯错误。
对于任何可能有相同问题的人,这就是答案。
warning: passing argument 1 of 'foo' from incompatible pointer type
并且
warning: assignment from incompatible pointer type
我知道通常情况下,这两个警告表示代码出现了严重问题。但在我的情况下,无论发生在哪里,我都非常清楚自己在做什么,并且我知道可以安全地忽略这些警告。(是的,我确定)
但现在我的代码已经变得如此庞大,以至于这些警告掩盖了其他任何东西,实际上隐藏了可能导致糟糕错误的潜在警告。所以我决定禁用它们。很快我意识到我不知道该怎么做。我的gcc版本是4.4.1,我知道可以使用:
#pragma GCC diagnostic ignore "-Wname"
我想忽略任何警告。但是在我找到的唯一一份GCC警告列表中,这个列表并没有包含这两个警告。我已经逐一选取他们并将其转化为错误以查看编译过程中是否由于不兼容指针类型而停止,但是都无济于事,如下所示。
#pragma GCC diagnostic error "-Wimplicit-int"
#pragma GCC diagnostic error "-Waddress"
#pragma GCC diagnostic error "-Wreturn-type"
.... //e.t.c.
所以,问题是,有没有人知道这些警告的名称,以便我可以实际地抑制它们?
编辑
由于评论中的讨论,我必须澄清一个误解,这使我相信我必须抑制这些警告。我认为执行指向结构体的指针之间的显式强制转换会涉及一些成本(无论多么微小)。
所以我的想法,我现在意识到是错误的,因为我的程序正在不同的平台上工作并已经工作了很长时间,为什么要添加工作来满足编译器呢?
好吧,我现在意识到了,并在这里写下来,以防其他人碰巧遇到这个主题并有相同的思路。执行指针的显式类型转换没有任何成本,而优点是:
编译器停止用这些警告批评你
其他人可以知道您在那里故意进行了转换,并且没有犯错误。
对于任何可能有相同问题的人,这就是答案。
grep
命令? - Ed Heal