#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
, программа печатает «ММ» вместо «GG». Я знаю, что в функции verify
отсутствует выражение return, но я никогда не использую return
значение. Есть ли объяснение?
Кстати, моя тестовая среда ubuntu 1804
и g++-7
генерирует правильную программу.