2009-10-29 135 views
2

我在XP PC上使用Borland C++ Builder 6。當我編譯引用crtdbg文件的軟件單元時,我收到以下錯誤消息:Borland C++ Builder編譯錯誤

/* Borland version of Microsoft CRTDBG.H header file 
    This is used by MFC and ATL. 
*/ 

/* 
*  C/C++ Run Time Library - Version 11.0 
* 
*  Copyright (c) 1999, 2002 by Borland Software Corporation 
*  All Rights Reserved. 
* 
*/ 

/* $Revision: 9.4.2.1 $ */ 

#ifndef _INC_CRTDBG 
#define _INC_CRTDBG 

#ifndef __UTILCLS_H 

#include <windows.h> 

#ifdef __cplusplus 
extern "C" { 
#endif 
/* Prototypes for internal RTL helper functions: */ 
void _ErrorMessage(const char *__message); 
void _ErrorExit (const char *__message); 
#ifdef __cplusplus 
} 
#endif 

/* Asserts */ 

#if !defined(_DEBUG) 

#define _ASSERT(expr) ((void)0) 
#define _ASSERTE(expr) ((void)0) 

#else /* !defined(_DEBUG) */ 

#define _ASSERT(a) _ASSERTE(a) 
#define _ASSERTE(expr) do {               \ 
    if (!(expr) && __ASSERTE_Helper (#expr, __FILE__, __LINE__) == IDCANCEL)    \ 
    ::DebugBreak();                  \ 
} while (0) 

/* _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 */ 
} 

#endif /* !defined(_DEBUG) */ 

#endif /* __UTILCLS_H */ 

#endif /* _INC_CRTDBG */ 



[C++ Error] crtdbg.h(52): E2268 Call to undefined function '_T' 
[C++ Error] crtdbg.h(52): E2034 Cannot convert 'int' to 'const char *' 
[C++ Error] crtdbg.h(52): E2340 Type mismatch in parameter 2 (wanted 'const char *', got 'int') 

它有什麼問題?

回答

4

您應該添加TCHAR.H include(或Borland等效)。

_T()是一個將8位字符串轉換爲寬字符格式的宏。