I can't reproduce the problem with gcc. Although gcc is not 100% standards-compliant in that it allows you to do a few illegal things, I like using it as my personal "correctness" test (which allows for an occasional false positive).
If gcc complains about something it is certainly wrong. If gcc does not bark, it is 80% certain standard.
I'm not sure why it works here, but my guess is the compiler concatenates the strings before evaluating macros?
Anyway, this is another good example how obnoxious, abusive, and misleading macros are.
Byo's example
_("First " "Second") indeed resolves to
wxGetTranslation(_T("First " "Second")) which resolves to
wxGetTranslation(L"First " "Second")), respectively.
Also note that this only works at all because
_T is defined earlier than
_ (remember there is only a single preprocessor pass). In other words, the functionality depends on the order in which include files are read...