Cuando se construye una aplicación en Windows utilizando TCHAR
apoyo, en %s
_tprintf()
significa char *
cadena para ANSI construye y construye wchar_t *
para Unicode mientras %S
significa lo contrario.¿Hay un especificador de formato que siempre signifique cadena de caracteres con _tprintf?
¿Pero hay especificadores de formato que siempre signifiquen cadena char *
sin importar si es una compilación Ansi o Unicode? Dado que incluso en Windows UTF-16 no se usa realmente para archivos o redes, sigue siendo bastante frecuente que quiera tratar con cadenas basadas en bytes, independientemente del tipo de caracteres nativos con los que compile su aplicación.
¿Es esta específica a MSVC? Acabo de notar esta advertencia de gcc en Ubuntu 10: 'advertencia: uso del modificador de longitud 'h' con carácter de tipo 's' – hippietrail
No, no es específico de MSVC, algunos otros compiladores admiten' h' y 'l' modificadores para el tipo 's' también. Supongo que gcc no es uno de ellos. –
Acabo de probar esto con gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2 - funciona, más o menos. – 18446744073709551615