¿Por qué C no tiene una función snwprintf?

¿Alguien sabe por qué no hay snwprintf función snwprintf en la biblioteca estándar de C?

Soy consciente de swprintf , pero eso no tiene la misma semántica de una versión verdadera, wchar_t de snprintf . Por lo que puedo decir, no hay una manera fácil de implementar una función snwprintf usando [v]swprintf :

A diferencia de snprintf , swprintf no devuelve el tamaño de búfer necesario; Si el búfer suministrado es insuficiente, simplemente devuelve -1. Esto es indistinguible del fracaso debido a errores de encoding, por lo que no puedo seguir intentando con buffers cada vez más grandes con la esperanza de que finalmente tenga éxito.

Supongo que podría configurar el último elemento del búfer para que no sea NUL, llamar a swprintf , y asumir que se produjo un truncamiento si ese elemento es NUL después. Sin embargo, ¿está garantizado que funcione? El estándar no especifica en qué estado debería estar el búfer si falla swprintf . (Por el contrario, snprintf describe qué caracteres se escriben y cuáles se descartan).

Vea la respuesta dada por Larry Jones aquí .

Esencialmente, swprintf se agregó en C95, mientras que snprintf se agregó en C99 y dado que muchas implementaciones ya devolvieron el número de caracteres requeridos (para snprintf ) y parecía algo útil de hacer, ese fue el comportamiento que se estandarizó. No pensaron que el comportamiento fuera lo suficientemente importante como para romper la compatibilidad con swprintf al agregarlo (que se agregó sin ese comportamiento varios años antes).