Ошибка компиляции при вызове _tcsstr и присвоении wchar_t * - PullRequest
0 голосов
/ 22 января 2009

Я получаю ошибку компиляции при попытке создать проект C ++, который ранее работал.

Код следует:

const wchar_t* pdest;
pdest = _tcsstr(ConnStr, Name);

Ошибка следующая: Ошибка 10 Ошибка C2440: «=»: невозможно преобразовать из «const char *» в «const wchar_t

»

Я использую Visual Studio 2008. Сообщение об ошибке хорошо объясняет проблему, но я знаю, что эта программа использовалась для компиляции, что я делаю не так?

Ответы [ 3 ]

7 голосов
/ 22 января 2009

Ваш код опасен. _tcsstr является макросом TCHAR, поэтому его определение может изменяться в зависимости от того, определен ли UNICODE. wchar_t исправлено. Ошибка, которую вы видите, вызвана именно этой проблемой - среда использует однобайтовую версию _tcsstr (вероятно, UNICODE не определен).

Не просто определить UNICODE. Исправьте код первым. Либо используйте макросы TCHAR для обоих, либо функции широких символов.

1 голос
/ 22 января 2009

_tcsstr для использования с TCHAR. В зависимости от настроек компиляции это либо char, либо wchar_t.

Так что либо используйте TCHAR, либо wcsstr

0 голосов
/ 07 марта 2016

Это должно решить эту проблему:

Свойство -> Свойства конфигурации -> Общие -> Набор символов: использовать многобайтовый набор символов.

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