Возможно, это прояснит ситуацию.
C89 ввел новый целочисленный тип, wchar_t
.Это похоже на символ, но обычно «шире».Во многих системах, включая Windows, wchar_t
составляет 16 бит.Это типично для систем, в которых реализована поддержка Unicode с использованием более ранних версий стандарта Unicode, которые первоначально определяли менее 65 535 символов.Позже Unicode был расширен для поддержки исторических и специальных наборов символов, поэтому в некоторых системах, включая Mac OS X и iOS, тип wchar_t
имеет размер 32 бита.Это часто плохо документировано, но вы можете использовать простой тест, подобный следующему, чтобы выяснить:
// how big is wchar_t?
NSLog(@"wchar_t is %u bits wide", 8 * sizeof(wchar_t));
На Mac или iPhone будет напечатано «ширина wchar_t 32 бита».Кроме того, wchar_t
- это typedef для другого целочисленного типа в C. В C ++ wchar_t
- это встроенный целочисленный тип.На практике это означает, что вам необходимо #include в C при использовании широких символов.
Ref: http://blog.ablepear.com/2010/07/objective-c-tuesdays-wide-character.html