November 15th, 2004

полосатая свинья

рабочее

Дошли наконец руки прочитать список отличий между C89 и C99 (кто не в курсе - это новая версия стандарта C). Видимо, девиз комисии был: "Больше C++ в C! Больше сторонних расширений в стандарт!" Краткий список добавленных фич:
- однострочные коментарии
- объявления переменных в любом месте блока
- объявление переменной внутри for
- inline функции
- отмена правила неявного int и автоматических прототипов функций
- неконстантные инициализаторы для локальных переменных
- открытые массивы в конце структуры (struct Chunk { int size; char data[]; })
- указание имен полей при инициализации (struct s { int a, b; } a[] = { [0]={.a=1, .b=2}, [2]={.a=3,4}}; )
- массивы переменной длины (VLA). правда кривоватые.
- макросы с переменным числом параметров
- стандартные имена для целых типов _фиксированного_размера_в_битах_, _не_меньше_стольки_то_бит, _самый_быстрый_не_меньше_стольки_то_бит_ и даже макросы, делающие для этих типов правильные суффиксы
- встроенная переменная __func__ содержащяя имя текущей функции

Вопрос на засыпку: сколько есть C99 complaint компиляторов? :)