I have tried the following code:
wprintf(L\"1 %s\\n\",\"some string\"); //Good
wprintf(L\"2 %s\\n\",L\"some string\"); //Not good -> print only first char
I suspect GCC (mingw) has custom code to disable the checks for the wide printf functions on Windows. This is because Microsoft's own implementation (MSVCRT) is badly wrong and has %s and %ls backwards for the wide printf functions; since GCC can't be sure whether you will be linking with MS's broken implementation or some corrected one, the least-obtrusive thing it can do is just shut off the warning.