#include <stdio.h>
LPTSTR lpCmdLine;
.................
strstr(lpCmdLine,"/Embedding");
8 студия или лажа со строками
Не могу понять что за приколы с 2005 студией. Библиотечные ф-ции для работы со строками которые без проблем работаю в 6 и 7 студиях в 2005 вызывают ошибку компиляции. К примеру
Код:
error C2665: 'strstr' : none of the 2 overloads could convert all the argument types
c:\program files\microsoft visual studio 8\vc\include\string.h(163): could be 'const char *strstr(const char *,const char *)'
c:\program files\microsoft visual studio 8\vc\include\string.h(187): or 'char *strstr(char *,const char *)'
while trying to match the argument list '(LPTSTR, const char [11])'
и это толбко один из множество примеров.
Код:
#ifdef UNICODE
typedef LPWSTR LPTSTR;
#else
typedef LPSTR LPTSTR;
#endif
typedef LPWSTR LPTSTR;
#else
typedef LPSTR LPTSTR;
#endif
соответственно попробуй либо в свойствах проекта убрать использование юникода, либо вместо LPTSTR попробу писать LPSTR.
А вообще ещё лучше наверно использовать функцию _tcsstr.
За подробностями в MSDN
Цитата: vectoroc
возможно lpCmdLine - указатель на юникодовую строку, где на символ отводится больше чем один байт... лишь предположение
соответственно попробуй либо в свойствах проекта убрать использование юникода, либо вместо LPTSTR попробу писать LPSTR.
А вообще ещё лучше наверно использовать функцию _tcsstr.
За подробностями в MSDN
Код:
#ifdef UNICODE
typedef LPWSTR LPTSTR;
#else
typedef LPSTR LPTSTR;
#endif
typedef LPWSTR LPTSTR;
#else
typedef LPSTR LPTSTR;
#endif
соответственно попробуй либо в свойствах проекта убрать использование юникода, либо вместо LPTSTR попробу писать LPSTR.
А вообще ещё лучше наверно использовать функцию _tcsstr.
За подробностями в MSDN
Помогло поменять вместо LPTSTR написать LPSTR, но мне все-таки интересно что за прикол в других студиях проблем не возникает, может дело в настройках компилятора?
Цитата: koval
может дело в настройках компилятора?
Может.
Напиши свою ф-цию так
strstr(lpCmdLine, _T("/Embedding"));
и все будет работать и при юникоде и при мукльтибайте.
Копать настройки проджекта - генерал - чарактер сет: юникод/мультибайт.
Цитата: koval
Помогло поменять вместо LPTSTR написать LPSTR, но мне все-таки интересно что за прикол в других студиях проблем не возникает, может дело в настройках компилятора?
Потому, что в "других студиях" в ерстройках проекта поумолчанию стоит Multibyte, а в VS2005 - Unicode.