你如何让带有'suspicious'和'-Wmain'字样的警告出现?

How do you make the warning come up that has the words 'suspicious' and '-Wmain' in it?

本文关键字:警告 -Wmain suspicious      更新时间:2023-10-16

这真的是一个简单的问题,它指的是Linux(与Windows或Mac相反)。

如何从C或c++编译器生成必须包含单词"suspicious"的警告消息,并且必须指向(-Wmain)。


(更新)

谢谢Boann -我得到了一些警告,但我也得到了错误-错误:'::main '必须返回' int '。

我问这个问题的原因是,一周前我的编译器(GCC 4.8.1)出现了这个警告说"可疑",这是由Wmain引起的。所以我输入-Wno-main,警告消失了,它编译得很好。就在最近,它开始抱怨使它成为一个实际的错误,而不是编译。所以我有点担心,不知何故,母舰在互联网上秘密地更新了我的编译器,在我不知情的情况下,把它当作错误来处理。(我可能使用'int4'作为返回类型,我永远已经定义为signed long int。

我注意到在g++手册页中有-Wmain引用,所以它必须用于某些东西,但是有什么警告没有被错误推翻??


在g++可执行文件的偏移量557284(十进制)处,我发现"Warn about suspicious declarations of "main".

不管怎样,

struct suspicious {};
int main(suspicious) {}

g++ -Wall的输出,GCC 4.8.2:

警告:'int main(可疑)'的第一个参数应该是'int' [-Wmain]

如果引用GCC的-Wmain参数,则通过给main奇数参数、奇数返回类型或给它static链接来获得警告。可以这样做:

static float main(float x) {
    return 0;
}

gcc -Wmain编译,它显示这些警告;不过,它们实际上并没有包含"suspicious"这个词:

warning: return type of 'main' is not 'int'
warning: first argument of 'main' should be 'int'
warning: 'main' takes only zero or two arguments
warning: 'main' is normally a non-static function

我刚刚下载了gcc 4.8.1的源代码,并在所有相关文件中搜索了"suspicious"这个词。

有很多情况,但据我所知,C或c++源文件的错误消息不可能包含单词"可疑"。有可能,但不太可能有局部修改。

有没有可能你误解了错误信息的内容?如果您有包含错误消息的日志,请更新您的问题以显示您收到的确切消息。

如果你担心你的编译器可能在你不知情的情况下更新了,你可以检查编译器可执行文件和它调用的任何程序的时间戳(使用gcc -v来检查)。但是gcc本身不会自动更新自己。如果您在由其他人管理的系统上使用它,则需要自动更新。如果您自己管理系统,您可能已经将其配置为无需手动干预即可更新软件;如果是这样,那就不是GCC的问题。我不知道你说的"母舰"是什么