宏函数 _T() 导致编译器错误

Macro Function _T() Causes Compiler Error

本文关键字:编译器 错误 函数      更新时间:2023-10-16

我正在尝试让我的 Win32 C++ 项目在开发C++中编译。该项目最初是在Visual Studio C++ 2010中创建的,因此它使用了许多Unicode宏函数,例如_tcscmp_tcscat,最重要的是_T.

我正在尝试让我的项目在 Dev C++ 中编译(为什么?这是一个很长的故事,但有必要)。所以我试图定义宏函数_T但是当使用此宏函数时,我收到编译器错误:'La' undeclared (first use this function)

关于我的宏功能_T出了问题的任何想法?

#if IS_DEVCPLUSPLUS > 0
    #undef _T
    #define _T(a) La
#endif

// Compile error occurs on below line: "'La' undeclared (first use this function)"
_tcscat( fileName, _T("\*") ); 
// The end result should be
_tcscat( fileName, L"\*" );

您正在使用的 #define,即使它适用于您的编译器,也是不完整的。

首先,使用令牌粘贴预处理器符号。其次,为 Unicode 和 MBCS 和构建定义 _T(x)。

#if defined (UNICODE) || defined (_UNICODE)
    typedef wchar_t TCHAR
    #define _T(a) L##a
#else
    typedef char TCHAR
    #define _T(a) a
#endif
#define TEXT(x) _T(x)

这应该使您接近(如果不是完整的_T/文本宏集)。