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 в константах
- Определение выравнивания функций, типов или переменных
- Встроенная функция так же быстра, как макрос
- Когда происходит доступ к изменчивому объекту?
- Как использовать встроенный язык ассемблера в коде 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-11.4.0/gcc/C-Extensions.html