Различают TCHAR и _TCHAR - PullRequest
7 голосов
/ 01 июня 2010

Чем отличаются два типа символов TCHAR и _TCHAR, определенные в заголовке Windows tchar.h? Объясните примерами. Кратко опишите сценарии, в которых вы будете использовать TCHAR, а не _TCHAR в своем коде. (10 баллов)

Ответы [ 2 ]

9 голосов
/ 13 июля 2012

В дополнение к тому, что сказал @RussC, TCHAR используется Win32 API и основано на определении UNICODE, тогда как _TCHAR используется средой выполнения C и основано на определении _UNICODE , UNICODE и _UNICODE обычно определяются / опускаются вместе, что делает TCHAR и _TCHAR взаимозаменяемыми, но это не является обязательным требованием. Они семантически разделены для использования различными структурами.

7 голосов
/ 01 июня 2010

Нашёл ответ здесь:

Форумы MSDN >> Центр разработчиков Visual Studio >> TCHAR vs _TCHAR

TCHAR и _TCHAR идентичны, хотя, поскольку TCHAR не имеет Microsoft не имеет права резервировать его как ключевое слово (представьте, если у вас есть переменная с именем TCHAR. Подумайте, что бы бывает). Следовательно, TCHAR не будет определяться #, когда языковые расширения отключено (/Za).

TCHAR определен в winnt.h (который вы получите, когда вы #include ), а также tchar.h в разделе / ​​Ze. _TCHAR доступен только в tchar.h (который также #defines _TSCHAR и _TUCHAR). Это неподписанные / подписанные варианты обычного типа данных TCHAR.

...