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

时间:2014-02-25 03:00:40

标签: c++ unicode macros dev-c++

我试图让我的Win32 C ++项目在Dev 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"\\*" );

1 个答案:

答案 0 :(得分:0)

您正在使用的#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 / TEXT宏,这应该会让你接近。