Функция макроса _T () вызывает ошибку компилятора

0

Я пытаюсь получить мой проект 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"\\*" );
  • 0
    @chris Спасибо L ##a работает. Вы должны сделать ответ, чтобы я мог принять
  • 0
    Там нет особого смысла в повторном ответе. Было бы лучше, если бы люди указывали на другой ответ (через дубликат).
Показать ещё 1 комментарий
Теги:
unicode
macros
dev-c++

1 ответ

0

#Define, который вы используете, даже если он работал для вашего компилятора, является неполным.

Во-первых, используйте символический символ препроцессора. Во-вторых, определите _T (x) как для Unicode, так и для MBCS и для сборки.

#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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню