我的代码中有一个奇怪的问题.我有许多分散在代码周围的断言,一切都运行良好.每当断言失败时,我都会收到一条消息,告诉我故障发生的位置.今天我在一个加载文件的函数中写了另一个断言.只是想确保fie存在.一个非常简单的断言.这是相关代码:
//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);
Run Code Online (Sandbox Code Playgroud)
我知道这并没有多大帮助,只是想展示我的问题所在.我的操作系统是Windows 7.编译器是GCC.我从Windows获得的错误消息是通常的运行时错误但没有行报告:
"该应用程序已要求Runtime以不寻常的方式终止它.请联系应用程序的支持团队以获取更多信息"
可能是什么问题呢?什么可能导致断言失败只是请求终止而不报告它发生的行,而在相同的代码中的每个其他情况下它按预期工作?在此先感谢您的帮助!