Документация -fshort-wchar
читает,
-fshort-wchar
Переопределите базовый тип для wchar_t
, чтобы он был short unsigned int
вместо значения по умолчанию для цели. Эта опция полезна для создания программ для запуска под WINE.
Предупреждение: ключ -fshort-wchar заставляет GCC генерировать код, который не совместим двоично с кодом, сгенерированным без этого переключателя. Используйте его для соответствия бинарному интерфейсу приложения не по умолчанию.
Таким образом, кажется, что этот флаг вызывает наблюдаемое несоответствие, и поскольку спецификация языка не говорит о таком флаге, поведение можно классифицировать как определяемое реализацией, так и неопределенное.
В качестве идентификатора вы должны использовать wcout
вместо cout
при работе с широкими символами, так как wcout
предназначен для обработки широких символов:
cout
является объектом типа basic_ostream<char>
.
wcout
- это объект типа basic_ostream<wchar_t>
.
Думаю, в этом случае проблема не в том, что вы используете для печати значения, так как вы в любом случае говорите компилятору трактовать wchar_t
как short unsigned int
.