Кто-то упомянул, что у компилятора Intel есть поддержка C99. Существует также Comeau C / C ++ компилятор , который полностью поддерживает C99. Это единственные, о которых я знаю.
Функции C99, которые я не использую, потому что они плохо поддерживаются, включают:
- массивы переменной длины
- макросы с переменным количеством параметров.
Функции C99, которые я регулярно использую и которые, похоже, довольно хорошо поддерживаются (кроме Microsoft):
stdint.h
snprintf()
- MS имеет нестандартный _snprintf()
, который имеет серьезные ограничения, заключающиеся в том, что буфер не всегда завершается нулем и не указывает, насколько большим должен быть буфер
Чтобы обойти проблемы поддержки Microsoft, я использую публичный домен stdint.h
от MinGW (который я изменил, чтобы он также работал на VC6) и почти публичный домен snprintf()
от Holger Вайс
Элементы, которые не поддерживаются Microsoft, но все еще будут использоваться в других компиляторах в зависимости от проекта, включают:
- смешанные декларации и код
- встроенные функции
_Pragma()
- это делает прагмы более полезными