#include <stdio.h>
#include <iostream>
__attribute__((optimize("O2"))) static void* verify(char *str)
{
if (str[0] == 0)
{
puts("MM");
exit(-2);
}
}
int main(int argc,char **argv)
{
verify(argv[0]);
puts("GG");
return 1;
}
这是我的代码。当我使用g++8/g++9/clang++-6/clang++-8
和-O2
优化进行编译时,程序将打印“ MM”而不是“ GG”。我知道函数verify
中缺少return语句,但是我从不使用return
值。有什么解释吗?
顺便说一下,我的测试环境是ubuntu 1804
,而g++-7
会生成正确的程序。