Краткое содержание
В этом файле описывается использование компиляторов GNU.
Авторское право © 1988-2024 Фонд свободного программного обеспечения, Inc.
Разрешается копировать, распространять и/или изменять данный документ на условиях Лицензии GNU на свободную документацию, версия 1.3 или любая более поздняя версия, опубликованная Фондом свободного программного обеспечения; при этом неизменяемые разделы — «Финансирование свободного программного обеспечения», тексты на обложке — (a) (см. ниже), и тексты на задней обложке — (b) (см. ниже). Копия лицензии включена в раздел «Лицензия GNU на свободную документацию».
(a) Текст Фонда свободного программного обеспечения для передней обложки:
Руководство GNU
(b) Текст Фонда свободного программного обеспечения для задней обложки:
У вас есть свобода копировать и изменять это руководство GNU, как и программное обеспечение GNU. Копии, опубликованные Фондом свободного программного обеспечения, собирают средства для развития GNU.
- 1 Языки программирования, поддерживаемые GCC
- 2 Стандарты языков, поддерживаемые GCC
- 3 Командные опции GCC
- 4 Определяемое реализацией поведение C
- 5 Определяемое реализацией поведение C++
- 6 Расширения семейства языков C
- 7 Расширения языка C++
- 8 Возможности GNU Objective-C
- 9 Бинарная совместимость
- 10
gcov—Программа покрытия тестов - 11
gcov-tool—Инструмент автономной обработки профиля Gcda - 12
gcov-dump—Инструмент автономной выгрузки профилей Gcda и Gcno - 13
lto-dump—Инструмент для выгрузки объектных файлов LTO. - 14 Известные причины проблем с GCC
- 15 Сообщения об ошибках
- 16 Как получить помощь с GCC
- 17 Вклад в разработку GCC
- Финансирование свободного программного обеспечения
- Проект GNU и GNU/Linux
- Общественная лицензия GNU
- Лицензия GNU на свободную документацию
- Авторы GCC
- Приложение А. Индексы
Оглавление
- 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 Опции форматирования сообщений диагностики
- 3.8 Опции запроса или подавления предупреждений
- 3.9 Опции управления статическим анализом
- 3.10 Опции для отладки программы
- 3.11 Опции управления оптимизацией
- 3.12 Опции инструментации программы
- 3.13 Опции управления препроцессором
- 3.14 Передача опций ассемблеру
- 3.15 Опции для компоновки
- 3.16 Опции поиска каталогов
- 3.17 Опции для соглашений о генерации кода
- 3.18 Опции разработчика GCC
-
3.19 Машинно-зависимые опции
- 3.19.1 Опции AArch64
- 3.19.2 Опции Adapteva Epiphany
- 3.19.3 Опции AMD GCN
- 3.19.4 Опции ARC
- 3.19.5 Опции ARM
- 3.19.6 Опции AVR
- 3.19.7 Опции Blackfin
- 3.19.8 Опции C6X
- 3.19.9 Опции CRIS
- 3.19.10 Опции C-SKY
- 3.19.11 Опции Darwin
- 3.19.12 Опции DEC Alpha
- 3.19.13 Опции eBPF
- 3.19.14 Опции FR30
- 3.19.15 Опции FT32
- 3.19.16 Опции FRV
- 3.19.17 Опции GNU/Linux
- 3.19.18 Опции H8/300
- 3.19.19 Опции HPPA
- 3.19.20 Опции IA-64
- 3.19.21 Опции LM32
- 3.19.22 Опции LoongArch
- 3.19.23 Опции M32C
- 3.19.24 Опции M32R/D
- 3.19.25 Опции M680x0
- 3.19.26 Опции MCore
- 3.19.27 Опции MicroBlaze
- 3.19.28 Опции MIPS
- 3.19.29 Опции MMIX
- 3.19.30 Опции MN10300
- 3.19.31 Опции Moxie
- 3.19.32 Опции MSP430
- 3.19.33 Опции NDS32
- 3.19.34 Опции Nios II
- 3.19.35 Опции Nvidia PTX
- 3.19.36 Опции OpenRISC
- 3.19.37 Опции PDP-11
- 3.19.38 Опции PowerPC
- 3.19.39 Опции PRU
- 3.19.40 Опции RISC-V
- 3.19.41 Опции RL78
- 3.19.42 Опции IBM RS/6000 и PowerPC
- 3.19.43 Опции RX
- 3.19.44 Опции S/390 и zSeries
- 3.19.45 Опции SH
- 3.19.46 Опции Solaris 2
- 3.19.47 Опции SPARC
- 3.19.48 Опции для System V
- 3.19.49 Опции V850
- 3.19.50 Опции VAX
- 3.19.51 Опции Visium
- 3.19.52 Опции VMS
- 3.19.53 Опции VxWorks
- 3.19.54 Опции x86
- 3.19.55 Опции x86 Windows
- 3.19.56 Опции Xstormy16
- 3.19.57 Опции Xtensa
- 3.19.58 Опции zSeries
- 3.20 Указание дочерних процессов и переключателей, которые необходимо передать им
- 3.21 Переменные среды, влияющие на GCC
- 3.22 Использование предварительно скомпилированных заголовков
- 3.23 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.3 Метки как значения
- 6.4 Вложенные функции
- 6.5 Нелокальные переходы
- 6.6 Построение вызовов функций
- 6.7 Ссылка на тип с помощью
typeof - 6.8 Условные операторы с пропущенными операндами
- 6.9 128-битные целые числа
- 6.10 Двойные слова целых чисел
- 6.11 Комплексные числа
- 6.12 Дополнительные типы с плавающей точкой
- 6.13 Полуточная плавающая точка
- 6.14 Десятичные типы с плавающей точкой
- 6.15 Шестнадцатеричные числа с плавающей точкой
- 6.16 Типы фиксированной точки
- 6.17 Имена адресных пространств
- 6.18 Массивы нулевой длины
- 6.19 Структуры без членов
- 6.20 Массивы переменной длины
- 6.21 Макросы с переменным числом аргументов
- 6.22 Несколько менее строгие правила для экранированных символов новой строки
- 6.23 Массивы, не являющиеся lvalue, могут иметь индексы
- 6.24 Арифметика с указателями на
voidи указателями на функции - 6.25 Указатели аргументов в функциях с переменным числом аргументов
- 6.26 Указатели на массивы с квалификаторами работают как ожидается
- 6.27 Инициализаторы, не являющиеся константами
- 6.28 Составные литералы
- 6.29 Определенные инициализаторы
- 6.30 Диапазоны значений case
- 6.31 Приведение к типу объединения
- 6.32 Смешанные объявления, метки и код
-
6.33 Объявление атрибутов функций
- 6.33.1 Общие атрибуты функций
- 6.33.2 Атрибуты функций AArch64
- 6.33.3 Атрибуты функций AMD GCN
- 6.33.4 Атрибуты функций ARC
- 6.33.5 Атрибуты функций ARM
- 6.33.6 Атрибуты функций AVR
- 6.33.7 Атрибуты функций Blackfin
- 6.33.8 Атрибуты функций BPF
- 6.33.9 Атрибуты функций C-SKY
- 6.33.10 Атрибуты функций Epiphany
- 6.33.11 Атрибуты функций H8/300
- 6.33.12 Атрибуты функций IA-64
- 6.33.13 Атрибуты функций M32C
- 6.33.14 Атрибуты функций M32R/D
- 6.33.15 Атрибуты функций m68k
- 6.33.16 Атрибуты функций MCORE
- 6.33.17 Атрибуты функций MicroBlaze
- 6.33.18 Атрибуты функций Microsoft Windows
- 6.33.19 Атрибуты функций MIPS
- 6.33.20 Атрибуты функций MSP430
- 6.33.21 Атрибуты функций NDS32
- 6.33.22 Атрибуты функций Nios II
- 6.33.23 Атрибуты функций Nvidia PTX
- 6.33.24 Атрибуты функций PowerPC
- 6.33.25 Атрибуты функций RISC-V
- 6.33.26 Атрибуты функций RL78
- 6.33.27 Атрибуты функций RX
- 6.33.28 Атрибуты функций S/390
- 6.33.29 Атрибуты функций SH
- 6.33.30 Атрибуты функций Symbian OS
- 6.33.31 Атрибуты функций V850
- 6.33.32 Атрибуты функций Visium
- 6.33.33 Атрибуты функций x86
- 6.33.34 Атрибуты функций Xstormy16
-
6.34 Указание атрибутов переменных
- 6.34.1 Общие атрибуты переменных
- 6.34.2 Атрибуты переменных ARC
- 6.34.3 Атрибуты переменных AVR
- 6.34.4 Атрибуты переменных Blackfin
- 6.34.5 Атрибуты переменных H8/300
- 6.34.6 Атрибуты переменных IA-64
- 6.34.7 Атрибуты переменных LoongArch
- 6.34.8 Атрибуты переменных M32R/D
- 6.34.9 Атрибуты переменных Microsoft Windows
- 6.34.10 Атрибуты переменных MSP430
- 6.34.11 Атрибуты переменных Nvidia PTX
- 6.34.12 Атрибуты переменных PowerPC
- 6.34.13 Атрибуты переменных RL78
- 6.34.14 Атрибуты переменных V850
- 6.34.15 Атрибуты переменных x86
- 6.34.16 Атрибуты переменных Xstormy16
- 6.35 Указание атрибутов типов
- 6.36 Атрибуты меток
- 6.37 Атрибуты перечислений
- 6.38 Атрибуты операторов
- 6.39 Синтаксис атрибутов
- 6.40 Прототипы и функции старого стиля
- 6.41 Комментарии в стиле C++
- 6.42 Знаки доллара в именах идентификаторов
- 6.43 Символ ESC в константах
- 6.44 Определение выравнивания функций, типов или переменных
- 6.45 Встроенная функция работает так же быстро, как макрос
- 6.46 Функции const и volatile
- 6.47 Когда происходит доступ к volatile объекту?
-
6.48 Как использовать встроенный язык ассемблера в коде C
- 6.48.1 Basic Asm — Инструкции ассемблера без операндов
-
6.48.2 Расширенный Asm — Инструкции ассемблера с операндами выражений C
- 6.48.2.1 Volatile
- 6.48.2.2 Шаблон ассемблера
- 6.48.2.3 Операнды вывода
- 6.48.2.4 Операнды вывода флагов
- 6.48.2.5 Операнды ввода
- 6.48.2.6 Флаги и регистры-заготовки
- 6.48.2.7 Метки goto
- 6.48.2.8 Общие модификаторы операндов
- 6.48.2.9 Модификаторы операндов AArch64
- 6.48.2.10 Модификаторы операндов x86
- 6.48.2.11 Операнды x86 с плавающей точкой
- 6.48.2.12 Модификаторы операндов MSP430
- 6.48.2.13 Модификаторы операндов LoongArch
- 6.48.2.14 Модификаторы операндов RISC-V
-
6.48.3 Ограничения для операндов
asm - 6.48.4 Управление именами, используемыми в коде ассемблера
- 6.48.5 Переменные в указанных регистрах
- 6.48.6 Размер
asm
- 6.49 Альтернативные ключевые слова
- 6.50 Неполные типы перечислений
- 6.51 Имена функций как строки
- 6.52 Получение адреса возврата или фрейма функции
- 6.53 Внутренние интерфейсы очистки стека
- 6.54 Использование векторных инструкций через встроенные функции
- 6.55 Поддержка
offsetof - 6.56 Встроенные функции
__syncдля атомарного доступа к памяти - 6.57 Встроенные функции для операций атомарного доступа с учетом модели памяти
- 6.58 Встроенные функции для выполнения арифметических операций с проверкой переполнения
- 6.59 Расширения модели памяти x86 для транзакционной памяти
- 6.60 Проверка размера объекта
- 6.61 Другие встроенные функции, предоставляемые GCC
-
6.62 Встроенные функции, специфичные для конкретных целевых машин
- 6.62.1 Встроенные функции AArch64
- 6.62.2 Встроенные функции Alpha
- 6.62.3 Встроенные функции Altera Nios II
- 6.62.4 Встроенные функции ARC
- 6.62.5 Встроенные функции ARC SIMD
- 6.62.6 Встроенные функции ARM iWMMXt
- 6.62.7 Расширения языка C для ARM (ACLE)
- 6.62.8 Встроенные функции ARM для управления состоянием и контролем операций с плавающей точкой
- 6.62.9 Расширения безопасности ARM ARMv8-M
- 6.62.10 Встроенные функции AVR
- 6.62.11 Встроенные функции Blackfin
- 6.62.12 Встроенные функции BPF
- 6.62.13 Встроенные функции FR-V
- 6.62.14 Встроенные функции LoongArch Base
- 6.62.15 Векторные встроенные функции LoongArch SX
- 6.62.16 Векторные встроенные функции LoongArch ASX
- 6.62.17 Встроенные функции MIPS DSP
- 6.62.18 Поддержка MIPS Paired-Single
- 6.62.19 Встроенные функции MIPS Loongson
- 6.62.20 Поддержка архитектуры MIPS SIMD (MSA)
- 6.62.21 Другие встроенные функции MIPS
- 6.62.22 Встроенные функции MSP430
- 6.62.23 Встроенные функции NDS32
- 6.62.24 Встроенные функции Nvidia PTX
-
6.62.25 Базовые встроенные функции PowerPC
- 6.62.25.1 Базовые встроенные функции PowerPC, доступные на всех конфигурациях
- 6.62.25.2 Базовые встроенные функции PowerPC, доступные на ISA 2.05
- 6.62.25.3 Базовые встроенные функции PowerPC, доступные на ISA 2.06
- 6.62.25.4 Базовые встроенные функции PowerPC, доступные на ISA 2.07
- 6.62.25.5 Базовые встроенные функции PowerPC, доступные на ISA 3.0
- 6.62.25.6 Базовые встроенные функции PowerPC, доступные на ISA 3.1
-
6.62.26 Встроенные функции PowerPC AltiVec/VSX
- 6.62.26.1 Встроенные функции PowerPC AltiVec на ISA 2.05
- 6.62.26.2 Встроенные функции PowerPC AltiVec, доступные на ISA 2.06
- 6.62.26.3 Встроенные функции PowerPC AltiVec, доступные на ISA 2.07
- 6.62.26.4 Встроенные функции PowerPC AltiVec, доступные на ISA 3.0
- 6.62.26.5 Встроенные функции PowerPC AltiVec, доступные на ISA 3.1
- 6.62.27 Встроенные функции PowerPC с аппаратной транзакционной памятью
- 6.62.28 Функции PowerPC для атомных операций с памятью
- 6.62.29 Встроенные функции PowerPC для поддержки умножения матриц
- 6.62.30 Встроенные функции PRU
- 6.62.31 Встроенные функции RISC-V
- 6.62.32 Векторные встроенные функции RISC-V
- 6.62.33 Встроенные функции CORE-V
- 6.62.34 Встроенные функции RX
- 6.62.35 Встроенные функции S/390 System z
- 6.62.36 Встроенные функции SH
- 6.62.37 Встроенные функции SPARC VIS
- 6.62.38 Встроенные функции TI C6X
- 6.62.39 Встроенные функции x86
- 6.62.40 Встроенные функции x86 для транзакционной памяти
- 6.62.41 Встроенные функции x86 для защиты потока управления
- 6.63 Проверка форматов, специфичные для конкретных целевых машин
-
6.62 Встроенные функции, специфичные для конкретных целевых машин
-
6.64 Прагмы, принимаемые GCC
- 6.64.1 Прагмы AArch64
- 6.64.2 Прагмы ARM
- 6.64.3 Прагмы M32C
- 6.64.4 Прагмы PRU
- 6.64.5 Прагмы RS/6000 и PowerPC
- 6.64.6 Прагмы S/390
- 6.64.7 Прагмы Darwin
- 6.64.8 Прагмы Solaris
- 6.64.9 Прагмы переименования символов
- 6.64.10 Прагмы структуры разметки
- 6.64.11 Слабые прагмы
- 6.64.12 Прагмы диагностики
- 6.64.13 Прагмы видимости
- 6.64.14 Прагмы макросов Push/Pop
- 6.64.15 Прагмы функций с определёнными параметрами
- 6.64.16 Прагмы для циклов
- 6.65 Неименованные поля структур и объединений
- 6.66 Локальное хранилище потоков
- 6.67 Двоичные константы с префиксом ‘0b’
-
6.64 Прагмы, принимаемые GCC
-
7 Расширения языка C++
- 7.1 Когда происходит обращение к изменяемому объекту C++?
- 7.2 Ограничение алиасов указателей
- 7.3 Нечёткая связь
- 7.4 Прагмы интерфейса и реализации C++
- 7.5 Где шаблон?
- 7.6 Извлечение указателя на функцию из связанного указателя на член-функцию
- 7.7 Специфичные для C++ атрибуты переменных, функций и типов
- 7.8 Многоверсионность функций
- 7.9 Свойства типов
- 7.10 Концепции C++
- 7.11 Устаревшие функции
- 7.12 Обратная совместимость
- 8 Функции GNU Objective-C
- 9 Бинарная совместимость
-
10
gcov—Программа для тестирования покрытия -
11
gcov-tool—Инструмент для обработки профилей Gcda в автономном режиме -
12
gcov-dump—Инструмент для вывода профилей Gcda и Gcno в автономном режиме -
13
lto-dump—Инструмент для вывода файлов объектов LTO.
-
14 Известные причины проблем с GCC
- 14.1 Фактические ошибки, которые мы ещё не исправили
- 14.2 Взаимодействие
- 14.3 Несовместимости GCC
- 14.4 Зафиксированные заголовочные файлы
- 14.5 Стандартные библиотеки
- 14.6 Разочарования и недоразумения
- 14.7 Распространённые недоразумения с GNU C++
- 14.8 Определённые изменения, которых мы не хотим внести
- 14.9 Сообщения об ошибках и предупреждения
- 15 Сообщения об ошибках
- 16 Как получить помощь с GCC
- 17 Содействие развитию GCC
- Финансирование свободного программного обеспечения
- Проект GNU и GNU/Linux
- Общая публичная лицензия GNU
- Лицензия GNU на свободную документацию
- Авторы GCC
- Приложение A Индексы
Введение
В данном руководстве описано использование компиляторов GNU, их особенности, несовместимости и как сообщать об ошибках. Оно соответствует компиляторам (GCC) версии 14.2.0. В отдельном руководстве описана внутренняя реализация компиляторов GNU, включая портирование их на новые платформы и некоторые сведения о создании фронт-эндов для новых языков. См. Введение в GNU Compiler Collection (GCC) Internals.
- Языки программирования, поддерживаемые GCC
- Стандарты языков, поддерживаемые GCC
- Командные опции GCC
- Определяемое реализацией поведение языка C
- Определяемое реализацией поведение языка C++
- Расширения семейства языков C
- Расширения языка 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-14.2.0/gcc/index.html