编译的时候遇到crtdbg.h , 真的很难缠
在C++builder,修改别人的代码。
修改后编译,打印如下:
[C++ Error] crtdbg.h(49): E2147 'bool' cannot start a parameter declaration
[C++ Warning] crtdbg.h(52): W8065 Call to function '_T' with no prototype
[C++ Error] crtdbg.h(52): E2340 Type mismatch in parameter 2 (wanted 'const signed char *', got 'int')
这个crtdbg.h不可以被更改,因为是临时生成出来的文件。
它对应的文件内容是:
/* _ASSERTE helper routine returns: MB_YES, MB_NO or MB_CANCEL
*/
__inline int __ASSERTE_Helper(bool expr, char *file, int line)
{
TCHAR msg[256*2];
::wsprintf(msg, _T("%s failed - %s/%d"), expr, file, line);
/* throw (msg); */
_ErrorExit(msg);
return 0; /* Never really gets here */
}
google了一下,都是关于内存泄露的时候会和这个文件相关,可我也没什么内存分配。
谁知道这个是什么原因,在什么情况下会出这个文件相关的错误?
[解决办法]
感觉你的代码有问题
int __ASSERTE_Helper(bool expr, char *file, int line)
::wsprintf(msg, _T("%s failed - %s/%d"), expr, file, line);
expr类型为bool, 调用时却作为 %s 字符串
[解决办法]
wsprintf 这个函数参数用错了