В чем разница между TCHAR и WCHAR? - PullRequest
15 голосов
/ 17 ноября 2010

Я открыл заголовочный файл winnt.h и нашел там две строки:

typedef wchar_t WCHAR;

и

typedef WCHAR TCHAR, *PTCHAR;

но в одном из моих постов был комментарий, что между ними есть какая-то разница. Тогда в чем разница?

Ответы [ 4 ]

18 голосов
/ 17 ноября 2010

Если вы прочитаете весь заголовок, вы найдете:

#ifdef _UNICODE
typedef WCHAR TCHAR;
#else
typedef char TCHAR;
#endif

или слова на этот счет.

Возможно, MS убрал узкий вариант в последнее время.

10 голосов
/ 17 ноября 2010

TCHAR может быть либо char, либо WCHAR в зависимости от платформы.WCHAR всегда является 16-битным символом Unicode, wchar_t.

7 голосов
/ 17 ноября 2010

http://msdn.microsoft.com/en-us/library/aa383751%28VS.85%29.aspx

TCHAR:

WCHAR, если определен UNICODE, CHAR в противном случае.

WCHAR:

16-битный Unicodeперсонаж.Для получения дополнительной информации см. Наборы символов, используемые шрифтами.

0 голосов
/ 04 ноября 2016

Технически говоря, нет никакой разницы, потому что вы не можете вводить две разные сущности в одну. Давайте посмотрим на пример ...

typedef char a;
typedef char  b;
typedef a b, c;

Это определение работает, но если заменить вышеприведенное определение на это

typedef char a;
typedef char * b;
typedef a b, c;

Ошибка 1 ошибка C2040: «b»: «a» отличается по уровням косвенности от «char *»

Другой

typedef char a;
typedef int b;
typedef a b, c;

Ошибка 1, ошибка C2371: «b»: переопределение; различные основные типы

Таким образом, анализируя эти вещи, можно определить только один и тот же тип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...