Перейти к содержанию
    

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколько я понимаю, тип "wchar_t" не является "встроенным" в компилятор, поэтому крутить настройки компилятора вряд ли поможет. Нужно поискать в заголовочных файлах, от какого базового типа он произошёл: что-то вроде

typedef unsigned int wchar_t;

Ну а дальше - зависит от потребностей. Если этот тип нужен только для личного использования, то его описание можно поправить, например так:

typedef uint16_t wchar_t;

Если же предполагается вызывать библиотечные функции, использующие этот тип - тогда хуже: они, вероятно, скомпилированы с четырёхбайтной версией wchar_t. Наверное можно попытаться их перекомпилировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколько я понимаю, тип "wchar_t" не является "встроенным" в компилятор, поэтому крутить настройки компилятора вряд ли поможет.

Как минимум, редактор его подсвечивает. Это, конечно, еще ничего не говорит о компиляторе, но все-таки...

 

Нужно поискать в заголовочных файлах, от какого базового типа он произошёл: что-то вроде

typedef unsigned int wchar_t;

У этого компилятора нет команды Go To Definition, как в Visual Studio, поэтому найти определение проблематично. В программе переопределить его с помощью другого typedef-а не получилось, компилятор ругается. Пока заменил с помощью #define, но это же не кошерно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У этого компилятора нет команды Go To Definition, как в Visual Studio, поэтому найти определение проблематично.

Приехали... Проблематично... Стандартные типы из ISO/IEC уже поиском ищем? stddef.h

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У этого компилятора нет команды Go To Definition, как в Visual Studio, поэтому найти определение проблематично.

В Студии это, конечно, поудобнее. Как вариант - можно в опциях проекта включить галочку "Generate preprocessed file" - по идее сформируется текстовый файл, в котором, в числе прочего, развёрнуты все include (в VDSP сам не пробовал). В этом файле и поискать, откуда берётся wchar_t.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Если переменную хранить во внутренней области памяти ширина, которой 16 бит, то переменная станет 16 битной, т.е. при сохранении старшие 16 бит будут терятся

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если переменную хранить во внутренней области памяти ширина, которой 16 бит, то переменная станет 16 битной, т.е. при сохранении старшие 16 бит будут терятся

Хм... А где же тогда хранить long long или double ? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...