проблема с типами в visual c++
От: pingved  
Дата: 24.05.08 07:51
Оценка:
нужно const char unsigned * преобразовать каким то образом к типу LPCWSTR.
Для вывода информации из glGetString.
MultiByteToWideChar говорит что ей нужнен signed char
Re: проблема с типами в visual c++
От: rg45 СССР  
Дата: 24.05.08 08:39
Оценка:
Здравствуйте, pingved, Вы писали:

P>нужно const char unsigned * преобразовать каким то образом к типу LPCWSTR.

P>Для вывода информации из glGetString.
P>MultiByteToWideChar говорит что ей нужнен signed char

А откуда взялся unsigned char? Возможно, в настройках проекта C/C++/Language установлено Default Char Unsigned : Yes? Тогда просто установить No и все. В крайнем случае можно применить reinterpret_cast, но это только если другого выхода не останется.

[Оффтоп] Классный ник — pingved
--
Справедливость выше закона. А человечность выше справедливости.
Re[2]: проблема с типами в visual c++
От: Centaur Россия  
Дата: 24.05.08 11:06
Оценка: 12 (2) +1
Здравствуйте, rg45, Вы писали:

P>>нужно const char unsigned * преобразовать каким то образом к типу LPCWSTR.

P>>Для вывода информации из glGetString.

glGetString выдаёт указатель типа const GLubyte*, где GLubyte, по-видимому, определён как unsigned char. (Я бы рассматривал это как баг библиотеки или её биндинга к C++ — по идее, для текстовых строк и клиенту, и библиотеке должна быть глубоко фиолетова знаковость char’а.)

P>>MultiByteToWideChar говорит что ей нужнен signed char


Неправильно. В header’ах и MSDN написано, что MultiByteToWideChar принимает параметр типа LPCSTR, который определён как const CHAR *, где CHAR определён как char.

R>А откуда взялся unsigned char? Возможно, в настройках проекта C/C++/Language установлено Default Char Unsigned : Yes? Тогда просто установить No и все. В крайнем случае можно применить reinterpret_cast, но это только если другого выхода не останется.


Вообще по стандарту (3.9.1/1) char, signed char и unsigned char — это три разных типа, не конвертируемых неявно друг в друга; параметр Default Char Unsigned влияет только на char. Поэтому, если у нас есть буфер signed char или unsigned char, то (по стандарту) при передаче его в параметр типа const char* каст в любом случае понадобится.
Re[3]: проблема с типами в visual c++
От: AOD Россия  
Дата: 26.05.08 05:51
Оценка:
Соглашусь с Centaur

Но совсем на крайний случай можно использовать CStringW (atlstr.h/cstringt.h — только MFC).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.