У меня странная проблема в моем коде. У меня есть много утверждений, разбросанных по коду, и все работает нормально. Всякий раз, когда подтверждение не удавалось, я получал сообщение с номером строки, где произошел сбой.
Сегодня я написал еще одно утверждение в функции, которая загружает файл. Просто хотел убедиться, что тьфу существует. Очень простое утверждение. Вот соответствующий код:
//Check that the file exists and can be opened
FILE* f = fopen(filename, "rb");
#ifdef ASSERTIONS_ON
assert(f!=NULL);//@problem For some reason while all other asserts work, this one just crashes the program without reporting line
#else
if(f == NULL)
return MODEL_LOAD_FILENOTFOUND;
#endif
fclose(f);
Я знаю, что это не очень помогает, но просто хотел продемонстрировать, в чем моя проблема. Моя ОС - Windows 7. Компилятор - GCC. Сообщение об ошибке, которое я получаю из Windows, является обычной ошибкой во время выполнения, но без отчета о строке:
"Приложение запросило среду выполнения, чтобы прекратить его необычным способом. Для получения дополнительной информации обратитесь в службу поддержки приложения"
В чем может быть проблема? Что может привести к тому, что assert не сможет просто запросить завершение, не сообщив о строке, где это происходит, в то время как в любом другом случае в том же коде это работает как задумано? Заранее спасибо за любую помощь!