"Dmitry Timoshkov" <[EMAIL PROTECTED]> writes: > "Michael GXnnewig" <[EMAIL PROTECTED]> wrote: > >> + LPWSTR szExt = strrchrW(szFile, L'.'); > >> +#define SLASH(w) ((w) == L'/' || (w) == L'\\') > > As were discussed many times using L prefix in order to create unicode > chars/strings is wrong due to difference in size of unicode characters > between windows and unix (2 vs. 4). > > We forced to create unicode strings explicitly: > static const WCHAR fooW[] = { 'f','o','o',0 }; > static const WCHAR dotW[] = { '.',0 }; > static const WCHAR slashW[] = { '/',0 }; > static const WCHAR bkslashW[] = { '\\',0 }; > > That's somewhat ugly and awkward, but it's really needed for > portability.
But when I change the code to use the "static const WCHAR[]" the compiler complains: ,----- | factory.c: In function `AVIFILE_BasenameW': | factory.c:163: warning: comparison between pointer and integer | factory.c:163: warning: comparison between pointer and integer | factory.c:163: warning: comparison between pointer and integer `----- So I have adjusted to use this: static const WCHAR dotW = (WCHAR)'.'; The it compiles and works also for my. Is this okay? When it's I will change it with my next patch, which still waits to be verified and be submitted. Michael Günnewig