首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

编译的时分遇到crtdbg.h , 真的很难缠

2013-01-02 
编译的时候遇到crtdbg.h , 真的很难缠在C++builder,修改别人的代码。修改后编译,打印如下:[C++ Error] crtd

编译的时候遇到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 这个函数参数用错了

热点排行