有时,当我像这样打开一个文件时:
FILE *file = fopen(fname, "wb");
if(!file) printf("Error code: %d\n",ferror(file));
我得到的结果是 32。这是什么意思?具体来说,对于 eMbedded Visual C++ 4.0
此外,eVC 似乎不支持 perror/errno :(
最佳答案
您以错误的方式使用了 ferror():它仅适用于有效(非空)文件句柄。将 NULL 传递给它(在 fopen() 失败的情况下)会导致 UB,这在您的情况下通过打印随机值来体现(不捕获 NULL 指针访问表明底层平台没有内存保护)。
关于c++ - 错误(文件)== 32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/475652/