Why don't you test it?
Good idea. Before I did some test, I firstly search the Google, and I hit one discussion:
wxChar wxStringCharType error, this link to our forum thread
Compiling C::B wxChar wxStringCharType error.
The core reason is: Under Linux, the wx 2.9.0 to 2.9.3 by default use UTF8 as its wxString internal encoding, which is actually char for wxChar, but wx 2.9.4 and wx 3.0.x later switched to wchar_t as its default wxString encoding, so actually wxChar is wchar_t.
See this reply:
Re: wxChar wxStringCharType errorForm the docs:
const wxStringCharType* wxString::wx_str() const
Explicit conversion to C string in the internal representation (either wchar_t* or UTF-8-encoded char*, depending on the build).
The wxString internal representation in Unix has been for a long time a char sequence, encoded in UTF8 (as GTK does).
So, you may try to recompile with wxUSE_UNICODE_WCHAR==1.
Anyhow, I know this internal representation has been changed (wx294 or wx-svn, I don't remember) to use wchar_t.
I would try with wx-svn.
Under Windows, there is no issue about this, because all the wx unicode build default to wchar_t.
Now, I think C::B won't support build against wx2.9.0 to 2.9.3, so the preprocessor hack should be totally removed.
EDIT, by the way, I can't find official document about %s and %ls, but it looks like I get the answer from this post:
Unicode and printf %s formatter - Google Groups, %s is used for a wide string, and %ls is used for wxString.