6 Расширения семейства языков C
GNU C предоставляет несколько языковых функций, отсутствующих в стандартном C ISO. (Опция -pedantic сообщает GCC о том, что при использовании этих функций будет выдаваться предупреждение.) Чтобы проверить наличие этих функций в условной компиляции, проверьте предварительно определённый макрос __GNUC__, который всегда определён в GCC.
Эти расширения доступны в C и Objective-C. Большинство из них также доступны в C++. См. Расширения языка C++ для расширений, которые применяются только к C++.
Некоторые функции, которые есть в ISO C99, но не в C90 или C++, также, как расширения, принимаются GCC в режиме C90 и в C++.
- Операторные выражения и объявления
- Локально объявленные метки
- Метки как значения
- Вложенные функции
- Нелокальные переходы
- Создание вызовов функций
- Ссылка на тип с помощью
typeof - Условные операторы с пропущенными операндами
- 128-битные целые числа
- Целые числа двойной длины
- Комплексные числа
- Дополнительные типы чисел с плавающей точкой
- Числа с плавающей точкой полуточной точности
- Десятичные типы чисел с плавающей точкой
- Шестнадцатеричные числа с плавающей точкой
- Типы чисел с фиксированной точкой
- Именованные адресные пространства
- Массивы нулевой длины
- Структуры без элементов
- Массивы переменной длины
- Макросы с переменным числом аргументов
- Несколько ослабленные правила для экранированных символов новой строки
- Массивы, не являющиеся ссылками на переменные, могут иметь индексы
- Арифметика над указателями на
voidи указателями на функции - Указатели-аргументы в функциях с переменным числом аргументов
- Указатели на массивы с квалификаторами работают как ожидается
- Инициализаторы, не являющиеся константами
- Составные литералы
- Инициализаторы с указанием места
- Диапазоны case
- Приведение к типу объединения
- Смешанные объявления, метки и код
- Объявление атрибутов функций
- Указание атрибутов переменных
- Указание атрибутов типов
- Атрибуты меток
- Атрибуты перечислителей
- Атрибуты операторов
- Синтаксис атрибутов
- Прототипы и определения функций старого стиля
- Комментарии в стиле C++
- Знаки доллара в именах идентификаторов
- Символ ESC в константах
- Определение выравнивания функций, типов или переменных
- Встроенная функция так же быстра, как макрос
- Функции Const и Volatile
- Когда осуществляется доступ к объекту 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-14.2.0/gcc/C-Extensions.html