В чем разница между TCHAR и WCHAR? Я открыл файл заголовка winnt.h и нашел там две строки: typedef wchar_t WCHAR; и typedef WCHAR TCHAR, *PTCHAR; но был комментарий в одном из моих сообщений, что между ними существует некоторая разница. Тогда в чем разница? Ответ 1 Если вы читаете весь заголовок, вы найдете: #ifdef _UNICODE typedef WCHAR TCHAR; #else typedef char TCHAR; #endif или слова на этот счет. Возможно, MS в последнее время удалила узкий вариант. Ответ 2 TCHAR может быть либо char, либо WCHAR на платформе. WCHAR всегда является 16-разрядным символом Unicode, wchar_t. Ответ 3 http://msdn.microsoft.com/en-us/library/aa383751%28VS.85%29.aspx TCHAR: A WCHAR, если UNICODE определен, a CHAR в противном случае. WCHAR: 16-разрядный символ Юникода. Дополнительные сведения см. В разделе Символьные наборы, используемые шрифтами. Ответ 4 Технически говоря, нет никакой разницы, потому что вы не можете ввести два разных объекта в один. Посмотрим пример... 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': переопределение; различные базовые типы Итак, анализируя эти вещи, только один тип может определяться вместе.
Ответ 1 Если вы читаете весь заголовок, вы найдете: #ifdef _UNICODE typedef WCHAR TCHAR; #else typedef char TCHAR; #endif или слова на этот счет. Возможно, MS в последнее время удалила узкий вариант.
Ответ 2 TCHAR может быть либо char, либо WCHAR на платформе. WCHAR всегда является 16-разрядным символом Unicode, wchar_t.
Ответ 3 http://msdn.microsoft.com/en-us/library/aa383751%28VS.85%29.aspx TCHAR: A WCHAR, если UNICODE определен, a CHAR в противном случае. WCHAR: 16-разрядный символ Юникода. Дополнительные сведения см. В разделе Символьные наборы, используемые шрифтами.
Ответ 4 Технически говоря, нет никакой разницы, потому что вы не можете ввести два разных объекта в один. Посмотрим пример... 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': переопределение; различные базовые типы Итак, анализируя эти вещи, только один тип может определяться вместе.