Почему объявление возвращаемого значения для функции, которая ничего не возвращает приводит к время аварии только в gcc8

В следующем коде объявляется функция/определена как (вместо , что приводит к времени выполнения аварии в НКУ 8 и с флагом олько.

Конкретные вопросы:

  1. Что изменилось в НКУ 8, так как он работал в Оук 7 ?
  2. Какие флаги можно использовать (если они есть), чтобы сгенерировать ошибку компиляции (а не предупреждение) в 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
2019-09-18 14:10:32
источник
0 ответов

Посмотрите другие вопросы по меткам