6 Расширения для семейства языков C
GNU C предоставляет несколько языковых возможностей, отсутствующих в стандартном ISO C. (Опция -pedantic сообщает GCC о выводе предупреждения, если используется любая из этих возможностей.) Для проверки доступности этих возможностей в условной компиляции, проверьте определение предопределенной макрос __GNUC__, которая всегда определена в GCC.
Эти расширения доступны в C и Objective-C. Большинство из них также доступны в C++. Смотрите Расширения языка C++, для расширений, применяемых только к C++.
Некоторые возможности, которые есть в ISO C99, но не в C90 или C++, также, как расширения, принимаются GCC в режиме C90 и в C++.
- Операторы и объявления в выражениях
- Локально объявленные метки
- Метки как значения
- Вложенные функции
- Нелокальные переходы
- Конструирование вызовов функций
- Ссылка на тип с помощью
typeof - Условные операторы с пропущенными операндами
- 128-битные целые числа
- Двухсловные целые числа
- Комплексные числа
- Дополнительные типы чисел с плавающей запятой
- Половинная точность чисел с плавающей запятой
- Десятичные типы чисел с плавающей запятой
- Шестнадцатеричные числа с плавающей запятой
- Типы чисел с фиксированной запятой
- Именованные адресные пространства
- Массивы нулевой длины
- Структуры без членов
- Массивы переменной длины
- Макросы с переменным числом аргументов.
- Несколько более свободные правила для экранированных символов новой строки
- Не-lvalue массивы могут иметь индексы
- Арифметика над указателями на
voidи указателями на функции - Указатели-аргументы в вариативных функциях
- Указатели на массивы с квалификаторами работают как ожидается
- Непостоянные инициализаторы
- Составные литералы
- Определённые инициализаторы
- Диапазоны case
- Приведение к типу объединения
- Смешанные объявления, метки и код
- Объявление атрибутов функций
- Указание атрибутов переменных
- Указание атрибутов типов
- Атрибуты меток
- Атрибуты перечислителей
- Атрибуты операторов
- Синтаксис атрибутов
- Прототипы и определения функций старого стиля
- Комментарии в стиле C++
- Знаки доллара в именах идентификаторов
- Символ ESC в константах
- Определение выравнивания функций, типов или переменных
- Встроенная функция так же быстра, как макрос
- Когда происходит доступ к volatile объекту?
- Как использовать встроенный язык ассемблера в коде C
- Альтернативные ключевые слова
- Неполные
enumтипы - Имена функций в виде строк
- Получение адреса возврата или фрейма функции
- Использование векторных инструкций через встроенные функции
- Поддержка
offsetof - Встроенные функции
__syncдля атомарного доступа к памяти - Встроенные функции для операций с атомарной памятью, учитывающие модель памяти
- Встроенные функции для выполнения арифметических операций с проверкой переполнения
- Расширения модели памяти x86 для транзакционной памяти
- Проверка размера объекта
- Другие встроенные функции, предоставляемые GCC
- Встроенные функции, специфичные для конкретных целевых машин
- Проверки формата, специфичные для конкретных целевых машин
- Предикаты, принимаемые GCC
- Неименованные поля структур и объединений
- Потоково-локальное хранилище
- Двоичные константы с префиксом ‘0b’
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-13.3.0/gcc/C-Extensions.html