Я пытаюсь полностью отключить исключения в Visual Studio 2010, и чтобы убедиться, что обработка исключений отключена, у меня есть следующий тест:
class CompilerFlagsTestExceptionConstructor
{
public:
CompilerFlagsTestExceptionConstructor() { throw std::exception("Exceptions Enabled"); }
~CompilerFlagsTestExceptionConstructor() { }
};
class CompilerFlagsTests : public CPPUNIT_NS::TestFixture
{
CPPUNIT_TEST_SUITE( CompilerFlagsTests );
CPPUNIT_TEST( Test_NoExceptions );
CPPUNIT_TEST_SUITE_END();
public:
void Test_NoExceptions()
{
try
{
CompilerFlagsTestExceptionConstructor object;
}
catch(std::exception)
{
assert(!"Exceptions are enabled");
}
}
};
Я проверил на страницах свойств, что обработка исключенийотключен, и я также отключил RTTI во всех моих проектах.Я попытался установить / EH в отрицательное значение, а также опустить его в командной строке.
Каждый раз, когда я запускаю этот тест, он не проходит и правильно выдает исключение
Причина, по которой я хочуОтключение обработки исключений связано с тем, что целевое программное обеспечение написано для целевой архитектуры, которая изначально не поддерживает обработку исключений и вызывает массовое разрастание кода для размещения разматывания стека.Целевая архитектура также имеет максимальный размер исполняемого файла, поэтому отключение исключений сокращает код, а также повышает производительность.Я хочу отключить обработку исключений в версии Windows, чтобы убедиться, что обработка ошибок для цели работает.
Я что-то не так делаю?Этот тест когда-нибудь сработает?Есть ли другой способ заставить и протестировать отключение исключений?
Спасибо!