À l'aide de snprintf dans une application multiplate-forme

Je suis en train d'écrire un programme C qui devrait être compilé avec tous les principaux compilateurs. Je suis actuellement en développement sur GCC sur une machine linux et de compiler sur MSVC avant de valider le code. Pour faire de la cross-compilation facile, je suis de la compilation avec -ansi et -pedantic drapeaux. Cela a bien fonctionné jusqu'à ce que j'ai commencé à utiliser snprintf qui n'est pas disponible dans la norme C89. GCC permet de compiler sans le -ansi switch, mais MSVC échouera toujours comme il n'a pas de support C99.

J'ai donc fait quelque chose comme,

#ifdef WIN32 
#define snprintf sprintf_s
#endif

Cela fonctionne bien parce que snprintf et sprintf_s a les mêmes signatures. Je me demande est-ce la bonne démarche?

n'est-ce pas snprintf standard pour tout C dans n'importe quelle plateforme?
pas de. snprintf fait partie du standard C99. MSVC n'ont pas de C99 de mise en œuvre.
sprintf_s n'est pas équivalent. snprintf renvoie le nombre de caractères qui aurait été écrit, alors que sprintf_s retourne -1 en cas de troncation. Voir cette discussion.
Voir la réponse de la poste similaire lien

OriginalL'auteur Navaneeth K N | 2010-10-20