Почему объявление возвращаемого значения для функции, которая ничего не возвращает приводит к время аварии только в gcc8
В следующем коде объявляется функция/определена как (вместо , что приводит к времени выполнения аварии в НКУ 8 и с флагом олько.
Конкретные вопросы:
- Что изменилось в НКУ 8, так как он работал в Оук 7 ?
- Какие флаги можно использовать (если они есть), чтобы сгенерировать ошибку компиляции (а не предупреждение) в gcc8 ?
main.cpp:
#include <iostream>
using namespace std;
int year = 2000;
int setYear(int year_h){year = year_h;}
int main()
{
cout << "Hello World!" << endl;
setYear(2019);
cout << "Year: " << year << endl;
return 0;
}
Время аварии:
g++-8 -O2 -o main main.cpp
./main
Hello World!
Hello World!
Segmentation fault (core dumped)
Работает с:
g++-7 -O2 -o main main.cpp
или
g++-8 -o main main.cpp
Редактировать: этот вопрос опустить оператор return в C++ ответ на мой второй вопрос, но не на первом (разница между 7 и 8 ССЗ ССЗ).
+2
0 ответов