Использование snprintf в кроссплатформенном приложении

Я пишу программу на C, которая, как ожидается, будет скомпилирована со всеми основными компиляторами. В настоящее время я разрабатываю GCC на Linux-машине и буду компилировать на MSVC перед фиксацией кода. Чтобы упростить кросс-компиляцию, я использую флаги -ansi и -pedantic . Это работало хорошо, пока я не начал использовать snprintf , который недоступен в стандарте C89. GCC может скомпилировать это без ключа -ansi , но MSVC всегда будет терпеть неудачу, поскольку он не поддерживает C99.

Я сделал что-то вроде:

#ifdef WIN32 
#define snprintf sprintf_s
#endif

Это хорошо работает, потому что snprintf и sprintf_s имеют одинаковые подписи. Мне интересно, правильный ли это подход?

11
задан Qix 24 April 2015 в 18:34
поделиться