Международная Огранизация по Стандартизации (ISO) опубликовала новый международный стандарт языка программирования C: ISO/IEC 9899:2011, ранее известный как C1X. Основные изменения:
- поддержка многопоточности;
- улучшенная поддержка юникода;
- обобщенные макросы (type-generic expressions, позволяют статичную перегрузку);
- анонимные структуры и объединения (упрощают обращение ко вложенным конструкциям);
- управление выравниванием объектов;
- статичные утверждения (static assertions);
- удаление опасной функции gets (в пользу безопасной gets_s);
- функция quick_exit;
- спецификатор функции _Noreturn;
- новый режим эксклюзивного открытия файла.
Кроме того, определен ряд необязательных для реализации возможностей, включая новый набор безопасных функций (в т. ч. для работы с массивами с проверкой границ). В этот список также попали возможности, которые в предыдущем стандарте считались обязательными: комплексная арифметика, массивы переменной длины.
Некоторые возможности нового стандарта уже поддерживаются компиляторами GCC и Clang. Стоит, однако, отметить, что полной поддержки предыдущего стандарта C99 в этих и большинстве других компиляторов нет.
>>> Подробности