Краткое содержание
В этом файле описывается использование компиляторов GNU.
Авторское право © 1988-2025 Free Software Foundation, Inc.
Разрешается копировать, распространять и/или изменять этот документ в соответствии с условиями GNU Free Documentation License версии 1.3 или любой более поздней версии, опубликованной Free Software Foundation; неизменяемые разделы — «Финансирование свободного программного обеспечения», текст на передней обложке — (a) (см. ниже), а текст на задней обложке — (b) (см. ниже). Копия лицензии включена в раздел «GNU Free Documentation License».
(a) Текст FSF для передней обложки:
Руководство GNU
(b) Текст FSF для задней обложки:
Вы можете свободно копировать и изменять это руководство GNU, как и программное обеспечение GNU. Копии, опубликованные Free Software Foundation, помогают финансировать разработку GNU.
- 1 Языки программирования, поддерживаемые GCC
- 2 Стандарты языков, поддерживаемые GCC
- 3 Параметры командной строки GCC
- 4 Поведение C, определяемое реализацией
- 5 Поведение C++, определяемое реализацией
- 6 Расширения семейства языков C
- 7 Встроенные функции, предоставляемые GCC
- 8 Расширения языка C++
- 9 Возможности GNU Objective-C
- 10 Бинарная совместимость
- 11
gcov— программа анализа покрытия тестами - 12
gcov-tool— автономный инструмент обработки профилей Gcda - 13
gcov-dump— автономный инструмент выгрузки профилей Gcda и Gcno - 14
lto-dump— инструмент выгрузки объектных файлов LTO. - 15 Известные причины проблем с GCC
- 16 Сообщение об ошибках
- 17 Как получить помощь по GCC
- 18 Участие в разработке GCC
- Финансирование свободного программного обеспечения
- Проект GNU и GNU/Linux
- GNU General Public License
- GNU Free Documentation License
- Участники разработки GCC
- Приложение A. Указатели
Содержание
- 1 Языки программирования, поддерживаемые GCC
- 2 Стандарты языков, поддерживаемые GCC
-
3 Параметры командной строки GCC
- 3.1 Краткое описание параметров
- 3.2 Параметры, управляющие типом выходных данных
- 3.3 Компиляция программ на C++
- 3.4 Параметры, управляющие диалектом C
- 3.5 Параметры, управляющие диалектом C++
- 3.6 Параметры, управляющие диалектами Objective-C и Objective-C++
- 3.7 Параметры, управляющие OpenMP и OpenACC
- 3.8 Параметры управления форматированием диагностических сообщений
- 3.9 Параметры включения или подавления предупреждений
- 3.10 Параметры управления статическим анализом
- 3.11 Параметры отладки программы
- 3.12 Параметры управления оптимизацией
- 3.13 Параметры инструментирования программы
- 3.14 Параметры управления препроцессором
- 3.15 Передача параметров ассемблеру
- 3.16 Параметры компоновки
- 3.17 Параметры поиска каталогов
- 3.18 Параметры соглашений о генерации кода
- 3.19 Параметры разработчика GCC
-
3.20 Параметры, зависящие от целевой машины
- 3.20.1 Параметры AArch64
- 3.20.2 Параметры Adapteva Epiphany
- 3.20.3 Параметры AMD GCN
- 3.20.4 Параметры ARC
- 3.20.5 Параметры ARM
- 3.20.6 Параметры AVR
- 3.20.7 Параметры Blackfin
- 3.20.8 Параметры C6X
- 3.20.9 Параметры CRIS
- 3.20.10 Параметры C-SKY
- 3.20.11 Параметры Cygwin и MinGW
- 3.20.12 Параметры Darwin
- 3.20.13 Параметры DEC Alpha
- 3.20.14 Параметры eBPF
- 3.20.15 Параметры FR30
- 3.20.16 Параметры FT32
- 3.20.17 Параметры FRV
- 3.20.18 Параметры GNU/Linux
- 3.20.19 Параметры H8/300
- 3.20.20 Параметры HPPA
- 3.20.21 Параметры IA-64
- 3.20.22 Параметры LM32
- 3.20.23 Параметры LoongArch
- 3.20.24 Параметры M32C
- 3.20.25 Параметры M32R/D
- 3.20.26 Параметры M680x0
- 3.20.27 Параметры MCore
- 3.20.28 Параметры MicroBlaze
- 3.20.29 Параметры MIPS
- 3.20.30 Параметры MMIX
- 3.20.31 Параметры MN10300
- 3.20.32 Параметры Moxie
- 3.20.33 Параметры MSP430
- 3.20.34 Параметры NDS32
- 3.20.35 Параметры Nvidia PTX
- 3.20.36 Параметры OpenRISC
- 3.20.37 Параметры PDP-11
- 3.20.38 Параметры PowerPC
- 3.20.39 Параметры PRU
- 3.20.40 Параметры RISC-V
- 3.20.41 Параметры RL78
- 3.20.42 Параметры IBM RS/6000 и PowerPC
- 3.20.43 Параметры RX
- 3.20.44 Параметры S/390 и zSeries
- 3.20.45 Параметры SH
- 3.20.46 Параметры Solaris 2
- 3.20.47 Параметры SPARC
- 3.20.48 Параметры System V
- 3.20.49 Параметры V850
- 3.20.50 Параметры VAX
- 3.20.51 Параметры Visium
- 3.20.52 Параметры VMS
- 3.20.53 Параметры VxWorks
- 3.20.54 Параметры x86
- 3.20.55 Параметры x86 Windows
- 3.20.56 Параметры Xstormy16
- 3.20.57 Параметры Xtensa
- 3.20.58 Параметры zSeries
- 3.21 Указание дочерних процессов и передаваемых им параметров
- 3.22 Переменные среды, влияющие на GCC
- 3.23 Использование предкомпилированных заголовков
- 3.24 Модули C++
-
4 Поведение C, определяемое реализацией
- 4.1 Трансляция
- 4.2 Среда
- 4.3 Идентификаторы
- 4.4 Символы
- 4.5 Целые числа
- 4.6 Числа с плавающей точкой
- 4.7 Массивы и указатели
- 4.8 Рекомендации
- 4.9 Структуры, объединения, перечисления и битовые поля
- 4.10 Квалификаторы
- 4.11 Деклараторы
- 4.12 Операторы
- 4.13 Директивы препроцессора
- 4.14 Функции библиотеки
- 4.15 Архитектура
- 4.16 Поведение, зависящее от локали
- 5 Поведение C++, определяемое реализацией
-
6 Расширения семейства языков C
- 6.1 Дополнительные числовые типы
-
6.2 Расширения массивов, объединений и структур
- 6.2.1 Массивы переменной длины
- 6.2.2 Массивы нулевой длины
- 6.2.3 Структуры без элементов
- 6.2.4 Объединения с гибкими членами-массивами
- 6.2.5 Структуры, содержащие только гибкие члены-массивы
- 6.2.6 Именованные поля структуры и объединения
- 6.2.7 Приведение к типу объединения
- 6.2.8 К массивам, не являющимся lvalue, можно применять индексацию
- 6.2.9 Неконстантные инициализаторы
- 6.2.10 Составные литералы
- 6.2.11 Именованные инициализаторы
- 6.3 Именованные адресные пространства
-
6.4 Атрибуты, специфичные для GCC
-
6.4.1 Объявление атрибутов функций
- 6.4.1.1 Общие атрибуты функций
- 6.4.1.2 Атрибуты функций AArch64
- 6.4.1.3 Атрибуты функций AMD GCN
- 6.4.1.4 Атрибуты функций ARC
- 6.4.1.5 Атрибуты функций ARM
- 6.4.1.6 Атрибуты функций AVR
- 6.4.1.7 Атрибуты функций Blackfin
- 6.4.1.8 Атрибуты функций BPF
- 6.4.1.9 Атрибуты функций C-SKY
- 6.4.1.10 Атрибуты функций Epiphany
- 6.4.1.11 Атрибуты функций H8/300
- 6.4.1.12 Атрибуты функций IA-64
- 6.4.1.13 Атрибуты функций LoongArch
- 6.4.1.14 Атрибуты функций M32C
- 6.4.1.15 Атрибуты функций M32R/D
- 6.4.1.16 Атрибуты функций m68k
- 6.4.1.17 Атрибуты функций MCORE
- 6.4.1.18 Атрибуты функций MicroBlaze
- 6.4.1.19 Атрибуты функций Microsoft Windows
- 6.4.1.20 Атрибуты функций MIPS
- 6.4.1.21 Атрибуты функций MSP430
- 6.4.1.22 Атрибуты функций NDS32
- 6.4.1.23 Атрибуты функций Nvidia PTX
- 6.4.1.24 Атрибуты функций PowerPC
- 6.4.1.25 Атрибуты функций RISC-V
- 6.4.1.26 Атрибуты функций RL78
- 6.4.1.27 Атрибуты функций RX
- 6.4.1.28 Атрибуты функций S/390
- 6.4.1.29 Атрибуты функций SH
- 6.4.1.30 Атрибуты функций Symbian OS
- 6.4.1.31 Атрибуты функций V850
- 6.4.1.32 Атрибуты функций Visium
- 6.4.1.33 Атрибуты функций x86
- 6.4.1.34 Атрибуты функций Xstormy16
-
6.4.2 Задание атрибутов переменных
- 6.4.2.1 Общие атрибуты переменных
- 6.4.2.2 Атрибуты переменных ARC
- 6.4.2.3 Атрибуты переменных AVR
- 6.4.2.4 Атрибуты переменных Blackfin
- 6.4.2.5 Атрибуты переменных H8/300
- 6.4.2.6 Атрибуты переменных IA-64
- 6.4.2.7 Атрибуты переменных LoongArch
- 6.4.2.8 Атрибуты переменных M32R/D
- 6.4.2.9 Атрибуты переменных Microsoft Windows
- 6.4.2.10 Атрибуты переменных MSP430
- 6.4.2.11 Атрибуты переменных Nvidia PTX
- 6.4.2.12 Атрибуты переменных PowerPC
- 6.4.2.13 Атрибуты переменных RL78
- 6.4.2.14 Атрибуты переменных V850
- 6.4.2.15 Атрибуты переменных x86
- 6.4.2.16 Атрибуты переменных Xstormy16
- 6.4.3 Задание атрибутов типов
- 6.4.4 Атрибуты меток
- 6.4.5 Атрибуты элементов перечисления
- 6.4.6 Атрибуты операторов
- 6.4.7 Синтаксис атрибутов
-
6.4.1 Объявление атрибутов функций
-
6.5 Прагмы, принимаемые GCC
- 6.5.1 Прагмы AArch64
- 6.5.2 Прагмы ARM
- 6.5.3 Прагмы LoongArch
- 6.5.4 Прагмы M32C
- 6.5.5 Прагмы PRU
- 6.5.6 Прагмы RS/6000 и PowerPC
- 6.5.7 Прагмы S/390
- 6.5.8 Прагмы Darwin
- 6.5.9 Прагмы Solaris
- 6.5.10 Прагмы переименования символов
- 6.5.11 Прагмы размещения структур
- 6.5.12 Прагмы слабых символов
- 6.5.13 Диагностические прагмы
- 6.5.14 Прагмы видимости
- 6.5.15 Прагмы Push/Pop макросов
- 6.5.16 Прагмы параметров для отдельных функций
- 6.5.17 Прагмы для отдельных циклов
- 6.6 Локальное хранилище потока
- 6.7 OpenMP
- 6.8 OpenACC
- 6.9 Встроенная функция работает так же быстро, как макрос
- 6.10 Когда происходит обращение к volatile-объекту?
-
6.11 Как использовать встроенный язык ассемблера в коде C
- 6.11.1 Базовый asm — инструкции ассемблера без операндов
-
6.11.2 Расширенный asm — инструкции ассемблера с операндами-выражениями C
- 6.11.2.1 Volatile
- 6.11.2.2 Шаблон ассемблера
- 6.11.2.3 Выходные операнды
- 6.11.2.4 Выходные операнды флагов
- 6.11.2.5 Входные операнды
- 6.11.2.6 Повреждаемые регистры и временные регистры
- 6.11.2.7 Метки goto
- 6.11.2.8 Общие модификаторы операндов
- 6.11.2.9 Модификаторы операндов AArch64
- 6.11.2.10 Модификаторы операндов x86
- 6.11.2.11 Операнды ассемблера x86 с плавающей запятой
asm - 6.11.2.12 Модификаторы операндов MSP430
- 6.11.2.13 Модификаторы операндов LoongArch
- 6.11.2.14 Модификаторы операндов RISC-V
- 6.11.2.15 Модификаторы операндов SH
-
6.11.3 Ограничения для операндов
asm - 6.11.4 Константные выражения C++11 вместо строковых литералов
- 6.11.5 Управление именами, используемыми в коде ассемблера
- 6.11.6 Переменные в указанных регистрах
- 6.11.7 Размер
asm
-
6.12 Другие расширения синтаксиса C
- 6.12.1 Операторы и объявления в выражениях
- 6.12.2 Локально объявленные метки
- 6.12.3 Метки как значения
- 6.12.4 Вложенные функции
- 6.12.5 Ссылка на тип с помощью
typeof - 6.12.6 Поддержка
offsetof - 6.12.7 Определение выравнивания функций, типов или переменных
- 6.12.8 Расширения объявлений типа
enum - 6.12.9 Поддержка типа
_Bool - 6.12.10 Макросы с переменным числом аргументов.
- 6.12.11 Условные выражения с пропущенными операндами
- 6.12.12 Диапазоны case
- 6.12.13 Смешанные объявления, метки и код
- 6.12.14 Комментарии в стиле C++
- 6.12.15 Несколько более свободные правила для экранированных символов новой строки
- 6.12.16 Шестнадцатеричные числа с плавающей запятой
- 6.12.17 Двоичные константы с префиксом ‘0b’
- 6.12.18 Знаки доллара в именах идентификаторов
- 6.12.19 Символ ESC в константах
- 6.12.20 Необработанные строковые литералы
- 6.12.21 Альтернативные ключевые слова
- 6.12.22 Имена функций в виде строк
- 6.13 Расширения семантики C
-
7 Встроенные функции, предоставляемые GCC
- 7.1 Встроенные функции для функций библиотеки C
- 7.2 Дополнительные встроенные функции для числовых операций
- 7.3 Встроенные функции для выделения памяти в стеке
- 7.4 Нелокальные переходы goto
- 7.5 Создание вызовов функций
- 7.6 Получение адреса возврата или кадра функции
- 7.7 Внутренние интерфейсы очистки стека
- 7.8 Использование векторных инструкций через встроенные функции
- 7.9 Встроенные функции для атомарного доступа к памяти
- 7.10 Проверка размера объекта
- 7.11 Встроенные функции для выделения и освобождения памяти в C++
- 7.12 Другие встроенные функции, предоставляемые GCC
-
7.13 Встроенные функции для конкретных целевых машин
- 7.13.1 Встроенные функции AArch64
- 7.13.2 Встроенные функции Alpha
- 7.13.3 Встроенные функции ARC
- 7.13.4 Встроенные функции ARC SIMD
- 7.13.5 Встроенные функции ARM iWMMXt
- 7.13.6 Расширения языка C для ARM (ACLE)
- 7.13.7 Внутренние функции состояния и управления плавающей точкой ARM
- 7.13.8 Расширения безопасности ARM ARMv8-M
- 7.13.9 Встроенные функции AVR
- 7.13.10 Встроенные функции Blackfin
- 7.13.11 Встроенные функции BPF
- 7.13.12 Встроенные функции FR-V
- 7.13.13 Базовые встроенные функции LoongArch
- 7.13.14 Векторные внутренние функции LoongArch SX
- 7.13.15 Векторные внутренние функции LoongArch ASX
- 7.13.16 Встроенные функции MIPS DSP
- 7.13.17 Поддержка формата Paired-Single в MIPS
- 7.13.18 Встроенные функции MIPS Loongson
- 7.13.19 Поддержка архитектуры MIPS SIMD (MSA)
- 7.13.20 Другие встроенные функции MIPS
- 7.13.21 Встроенные функции MSP430
- 7.13.22 Встроенные функции NDS32
- 7.13.23 Встроенные функции Nvidia PTX
-
7.13.24 Основные встроенные функции PowerPC
- 7.13.24.1 Основные встроенные функции PowerPC, доступные во всех конфигурациях
- 7.13.24.2 Основные встроенные функции PowerPC, доступные в ISA 2.05
- 7.13.24.3 Основные встроенные функции PowerPC, доступные в ISA 2.06
- 7.13.24.4 Основные встроенные функции PowerPC, доступные в ISA 2.07
- 7.13.24.5 Основные встроенные функции PowerPC, доступные в ISA 3.0
- 7.13.24.6 Основные встроенные функции PowerPC, доступные в ISA 3.1
-
7.13.25 Встроенные функции PowerPC AltiVec/VSX
- 7.13.25.1 Встроенные функции PowerPC AltiVec в ISA 2.05
- 7.13.25.2 Встроенные функции PowerPC AltiVec, доступные в ISA 2.06
- 7.13.25.3 Встроенные функции PowerPC AltiVec, доступные в ISA 2.07
- 7.13.25.4 Встроенные функции PowerPC AltiVec, доступные в ISA 3.0
- 7.13.25.5 Встроенные функции PowerPC AltiVec, доступные в ISA 3.1
- 7.13.26 Встроенные функции аппаратной транзакционной памяти PowerPC
- 7.13.27 Функции атомарных операций с памятью PowerPC
- 7.13.28 Встроенные функции ускорения умножения матриц PowerPC
- 7.13.29 Встроенные функции PRU
- 7.13.30 Встроенные функции RISC-V
- 7.13.31 Векторные внутренние функции RISC-V
- 7.13.32 Встроенные функции CORE-V
- 7.13.33 Встроенные функции RX
- 7.13.34 Встроенные функции S/390 System z
- 7.13.35 Встроенные функции SH
- 7.13.36 Встроенные функции SPARC VIS
- 7.13.37 Встроенные функции TI C6X
- 7.13.38 Встроенные функции x86
- 7.13.39 Внутренние функции транзакционной памяти x86
- 7.13.40 Внутренние функции защиты потока управления x86
-
8 Расширения языка C++
- 8.1 Когда происходит обращение к volatile-объекту C++?
- 8.2 Ограничение алиасинга указателей
- 8.3 Неопределенное связывание
- 8.4 Прагмы интерфейса и реализации C++
- 8.5 Где находится шаблон?
- 8.6 Получение указателя на функцию из связанного указателя на функцию-член
- 8.7 Атрибуты переменных, функций и типов, специфичные для C++
- 8.8 Многоверсионность функций
- 8.9 Характеристики типов
- 8.10 Устаревшие возможности
- 8.11 Обратная совместимость
- 9 Возможности GNU Objective-C
- 10 Двоичная совместимость
-
11
gcov— программа проверки покрытия тестами -
12
gcov-tool— автономный инструмент обработки профилей Gcda -
13
gcov-dump— автономный инструмент для вывода профилей Gcda и Gcno -
14
lto-dump— инструмент для вывода объектных файлов LTO. -
15 Известные причины проблем с GCC
- 15.1 Реальные ошибки, которые мы еще не исправили
- 15.2 Взаимодействие
- 15.3 Несовместимости GCC
- 15.4 Фиксированные заголовочные файлы
- 15.5 Стандартные библиотеки
- 15.6 Разочарования и недоразумения
- 15.7 Распространенные заблуждения о GNU C++
- 15.8 Некоторые изменения, которые мы не хотим вносить
- 15.9 Предупреждения и сообщения об ошибках
- 16 Сообщение об ошибках
- 17 Как получить помощь по GCC
- 18 Участие в разработке GCC
- Финансирование свободного программного обеспечения
- Проект GNU и GNU/Linux
- Стандартная общественная лицензия GNU
- Лицензия GNU на свободную документацию
- Участники разработки GCC
- Приложение A Указатели
Введение
В этом руководстве описано использование компиляторов GNU, их возможности и несовместимости, а также порядок сообщения об ошибках. Руководство соответствует версии 15.3.0 компиляторов (GCC). Внутреннее устройство компиляторов GNU, включая сведения о переносе на новые целевые платформы и о написании интерфейсных модулей для новых языков, описано в отдельном руководстве. См. раздел Введение в руководстве «Внутреннее устройство коллекции компиляторов GNU (GCC)».
- Языки программирования, поддерживаемые GCC
- Языковые стандарты, поддерживаемые GCC
- Параметры командной строки GCC
- Поведение языка C, определяемое реализацией
- Поведение языка C++, определяемое реализацией
- Расширения семейства языков C
- Встроенные функции, предоставляемые GCC
- Расширения языка C++
- Возможности GNU Objective-C
- Двоичная совместимость
gcov— программа проверки покрытия тестамиgcov-tool— автономный инструмент обработки профилей Gcdagcov-dump— автономный инструмент для вывода профилей Gcda и Gcnolto-dump— инструмент для вывода объектных файлов LTO.- Известные причины проблем с GCC
- Сообщение об ошибках
- Как получить помощь по GCC
- Участие в разработке GCC
- Финансирование свободного программного обеспечения
- Проект GNU и GNU/Linux
- Стандартная общественная лицензия GNU
- Лицензия GNU на свободную документацию
- Участники разработки GCC
- Указатели
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/index.html