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