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