Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Что такое GX?


Автор: Dray 27.5.2005, 15:25
Здрасте.
Подскажите пожалуйста длячего нужен compiler option GX?
Читал MSDN:
Цитата
This option enables synchronous exception handling with the assumption that extern C functions never throw an exception. It is equivalent to /EHsc.

/GX is in effect, by default, when you compile from within the development environment. By default, /GX- is enabled when using command-line tools.

Остаются вопросы. Поумолчанию он есть в консольных приложениях. В MFC и ATL приложениях его нету. А для того, чтобы не было всяких warning'ов при использовании STL нужно его включать. Безопасно ли его включать? Что он делает? И почему он не включен по умолчанию?

Автор: Void 27.5.2005, 19:34
Цитата(Dray @ 27.5.2005, 17:25)
Что он делает?

Включает раскрутку стека при пробрасывании исключения. Вот простейший пример:
Код
#include <iostream>

class A {
public:
    A() { }
    ~A() {
        std::cerr << "A destructed\n";
    }
};

int main() {
    try {
        A a;
        throw "exception!";
    } catch (char *e) {
        std::cerr << e << " handled\n";
    }
    return 0;
}


Без -EHsc выводит:
Код
exception! handled

с ним:
Код
A destructed
exception! handled

Вывод: включать обязательно при использовании исключений (да и без них, пожалуй стоит - оверхед, имхо, близок к нулю). В STL они используются очень активно - лично я на такое количество варнингов смотреть не могу, даже вопроса не возникает, включать или не включать smile

Автор: Dray 28.5.2005, 11:16
Спасибо, Void, все теперь ясно стало. Включать GX надо!!!

Автор: Dray 29.5.2005, 18:43
Цитата
It is equivalent to /EHsc.

Еще небольшой вопрос: EHsc и GX чем они отличаются и какой лучше включать? smile

Автор: Void 29.5.2005, 19:27
Цитата(Dray @ 29.5.2005, 20:43)
Еще небольшой вопрос: EHsc и GX чем они отличаются и какой лучше включать? smile

Ничем smile IDE использует -EHsc, в консоли быстрее (на целых две буквы короче! smile ) печатать -GX.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)