Кто-то упомянул, что компилятор Intel имеет поддержку C99. Существует также Comeau C/C++ compiler, который полностью поддерживает C99. Это единственные, о которых я знаю.
C99 функции, которые я не использую, потому что они не очень хорошо поддерживается включают в себя:
- массивы переменной длины
- макросы с переменным числом параметров.
C99 функции, которые я регулярно использовать, что, кажется, довольно хорошо поддерживается (за исключением Microsoft):
stdint.h
snprintf()
- MS имеет нестандартную _snprintf()
, что имеет серьезные ограничения не всегда нулевое завершение буфера и отсутствие указания того, насколько большой буфер должен быть
Чтобы обойти поддержку без поддержки Microsoft, я использую public domain stdint.h
from MinGW (что я изменил, чтобы работать на VC6) и nearly public domain snprintf()
from Holger Weiss
Элементы, которые не поддерживаются Microsoft, но по-прежнему будет использовать на других компиляторов в зависимости от проекта включают:
- неоднозначные заявления и код
- встроенные функции
_Pragma()
- это делает прагмами гораздо более годные к употреблению
не забывайте о библиотеках. Помимо приятного синтаксиса (например, инициаторы инициализации), C99 добавляет множество полезных функций математической библиотеки, например long lrtint (double); который выполняет операцию быстрого округления, которую вы иначе должны взломать, как (длинный) (x + 0,5). – 2009-12-09 21:06:32
Компилятор PGCC с высокой производительностью Portland Group совместим со 100% C99. – 2013-10-28 15:18:01