你如何让带有'suspicious'和'-Wmain'字样的警告出现?
How do you make the warning come up that has the words 'suspicious' and '-Wmain' in it?
这真的是一个简单的问题,它指的是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的问题。我不知道你说的"母舰"是什么
- 警告处理为错误这里有什么问题
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- cppcheck在const std::string[]上引发警告
- GCC对可能有效的代码抛出init list生存期警告
- 如何在BST的这个简单递归实现中消除警告
- 关于std::move的使用,是否有编译警告
- g++ 在某个类成员未初始化时不发出警告
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- 使用typeid警告未使用的变量
- 示例C++项目编译中的警告
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- 如何修复编译器警告 C6386 和 C6385?
- 返回语句后的代码,没有警告
- 获取隐式转换溢出从无符号到已签名的警告
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 在未链接的部分上生成警告
- 警告 C4552:">>":未使用表达式的结果
- 禁止显示由于常量为零而比较始终为假的警告
- 你如何让带有'suspicious'和'-Wmain'字样的警告出现?
- 警告:'int main(int, char***)' 的第二个参数应该是 'char **' [-Wmain]