Простой сбой программы

Итак, я использовал MinGW GCC версии 4.4 или какое-то время и решил, что пришло время обновиться. Я зашел на сайт MinGW и скачал последнюю версию GCC (4.7.0 ).

После удаления моей предыдущей версии и установки самой новой версии даже самая простая программа вылетит. Например, если я скомпилирую эту программу

#include <iostream>

using namespace std;

int main () {
    cout << "Hello, World" << endl;

    return 0;
}

с помощью командной строки

g++ hello.cpp -o hello.exe

Он распечатает «Hello, World», а затем вылетит. Однако, если я скомпилирую его со следующей командной строкой:

g++ -O3 hello.cpp -o hello.exe

Он будет работать отлично, без сбоев вообще.

Теперь, если я изменю программу ввода и сделаю ее немного сложнее:

#include <iostream>
#include <string>

using namespace std;

int main () {
    string str;

    cout << "Enter a string: ";
    getline (cin, str);

    if (str == "foo")
        cout << "You entered foo!" << endl;
    else
        cout << "You entered: " << str;

    return 0;
}

Без опции оптимизации (-O3 )произойдет сбой перед выводом «Введите строку :», однако со строкой оптимизации кода произойдет сбой после ввода строки.

Теперь, наконец, к моему вопросу. Что я могу сделать, чтобы исправить это, мне просто нужно будет вернуться к предыдущей версии GCC, чтобы использовать ее? Кроме того, почему GCC не может правильно скомпилировать простую программу?


Обновление:Ошибка была вызвана установкой GCC, при установке с помощью установщика MinGW и выборе опции «Загрузить последние каталоги репозитория» она воспроизводила ошибку. Однако, если я использовал тот же установщик и выбрал «Использовать предварительно -упакованные каталоги репозитория», ошибка больше не существовала. Таким образом, в последней версии двоичных файлов, перечисленных в каталогах MinGW GCC, есть некоторая ошибка.

11
задан Alex 15 August 2012 в 19:55
поделиться