C compiler support
From cppreference.net
<
c
|
|
Эта страница поддерживается по мере возможности и может отставать от последних выпусков компиляторов. Если вы видите, что что-то устарело, пожалуйста, помогите нам, обновив это! |
Содержание |
Функции C23
Обратите внимание, что этот список может измениться по мере развития чернового стандарта C23/2x.
Основные возможности языка C23
|
Этот раздел не завершён
Причина: статус для Apple Clang и других компиляторов с поддержкой C2x |
|
Функция C23
|
Документ(ы)
|
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
| static_assert без сообщения | N2265 | 9 | 9 | Да | Да | 6.5 | 2021.1.2 (clang based) | ||||
[[
nodiscard
]]
|
N2267 | 10 | 9 | Да | 6.4 | 2021.1.2 (clang based) | |||||
[[
maybe_unused
]]
|
N2270 | 10 | 9 | Да | 6.4 | 2021.1.2 (clang based) | |||||
[[
deprecated
]]
|
N2334 | 10 | 9 | Да | 6.4 | 2021.1.2 (clang based) | |||||
| Атрибуты |
N2335
N2554 |
10 | 9 | Да | 6.4 | 2021.1.2 (clang based) | |||||
| Типы десятичных чисел с плавающей запятой IEEE 754 | N2341 |
4.2
(частично)*
12 |
13.0 (частично)* | ||||||||
[[
fallthrough
]]
|
N2408 | 10 | 9 | Да | 6.4 | 2021.1.2 (clang based) | |||||
u8
символьные константы
|
N2418 | 10 | 15 | 6.5 | 2022.2 | ||||||
| Удаление определений функций без прототипа | N2432 | 10 | 15 | 2022.2 | |||||||
[[
nodiscard
]]
с сообщением
|
N2448 | 11 | 10 | Да | 6.4 | 2021.1.2 (clang based) | |||||
| Безымянные параметры в определениях функций | N2480 | 11 | 11 | Да | 6.4 | 2021.1.2 (clang based) | |||||
| Метки перед объявлениями и в конце блоков | N2508 | 11 | 16 | Частично* | 6.5 | 17.0 * | |||||
| Бинарные целочисленные константы | N2549 |
4.3
*
11 |
2.9
*
9 |
19.0 (2015)* * | Да | 6.5 | 11.0 * | ||||
| __has_c_attribute в препроцессорных условных директивах | N2553 | 11 | 9 | Да | 6.5 | 2021.1.2 (clang based) | |||||
| Разрешить дублирование атрибутов | N2557 | 11 | 13 | Да | 6.5 | 2021.4 (clang-based | |||||
| Типы обмена и расширенные IEEE 754 | N2601 |
7
(частично)*
14 |
6 (частично)* | Частично* | |||||||
| Разделители цифр | N2626 | 12 | 13 | 19.0 (2015)* * | Да | 6.5 | 18.0 * | ||||
#elifdef
и
#elifndef
|
N2645 | 12 | 13 | 19.40* | 13.1.6* | 6.5 | 2021.4 | ||||
Изменение типа
u8
строковых литералов
|
N2653 | 13 | |||||||||
[[
maybe_unused
]]
для меток
|
N2662 | 11 | 16 | 6.5 | 2022.2 | ||||||
| #warning | N2686 | Да | Да | Да | 6.5 | Да | |||||
| Битово-точные целочисленные типы ( _BitInt ) | N2763 | 14 (частично)* | 15 | 6.5 | 2022.2 | ||||||
[[
noreturn
]]
|
N2764 | 13 | 15 | 6.5 | 2022.2 | ||||||
| Суффиксы для битово-точных целочисленных констант | N2775 | 14 | 15 | 2022.2 | |||||||
| __has_include в препроцессорных условных конструкциях | N2799 | 5 | Да | 19.11* | Да | 6.5 | 18.0 | ||||
| Синтаксис идентификаторов с использованием Стандарта Юникод, Приложение 31 | N2836 | 13 | 15 | 6.5 | 2022.2 | ||||||
| Удаление объявлений функций без прототипа | N2841 | 13 | 15 | 2022.2 | |||||||
| Пустые инициализаторы | N2900 |
Частично*
13 |
Частично* | Частично* | Частично* | Частично* | |||||
| typeof и typeof_unqual |
N2927
N2930 |
Частично*
13 |
Частично*
16 |
19.39* | Частично* | Частично* | Частично* | Частично* | |||
| Новая орфография ключевых слов | N2934 | 13 | 16 | 6.5 | |||||||
| Предопределенные true и false | N2935 | 13 | 15 | 2022.2 | |||||||
[[
unsequenced
]]
и
[[
reproducible
]]
|
N2956 | 15 | |||||||||
| Ослабление требований для списка вариативных параметров | N2975 | 13 | 16 | 6.5 | 2023.1 | ||||||
| Вывод типов в определениях объектов | N3007 | 13 | 18 | ||||||||
| #embed | N3017 | 15 | 19 | ||||||||
| constexpr объекты | N3018 | 13 | 19 | ||||||||
| Улучшенные обычные перечисления | N3029 | 13 | 20 * | ||||||||
| Перечисления с фиксированными базовыми типами | N3030 | 13 | 20 * | ||||||||
__VA_OPT__
|
N3033 |
8
13 |
12 | 19.39* | 6.5 | ||||||
| Спецификаторы класса хранения для составных литералов | N3038 | 13 | |||||||||
| nullptr | N3042 | 13 | 16 | ||||||||
|
Функциональность C23 |
Документ(ы) |
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|
Функции библиотеки C23
|
Этот раздел не завершён
Причина: требуется отдельный список для стандартных библиотек C |
Особенности C99
Основные возможности языка C99
|
Этот раздел не завершён
Причина: требуется перечислить компиляторы C, верификация |
|
Функция C99
|
Документ(ы)
|
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
| Универсальные символы в идентификаторах | 3.1 | Да | Да | ||||||||
| Увеличенные translation limits | N590 | 0.9 | N/A | ||||||||
| // комментарии | N644 | 2.7 | Да | Да | |||||||
| restrict указатели | N448 | 2.95 | Да | частично * | |||||||
| Улучшенные arithmetic types |
N815
N601 N620 N638 N657 N694 N809 |
Да | частично | Возможно | |||||||
| Гибкие элементы массива | 3.0 | Да | Да | ||||||||
| Массивы переменной длины (VLA) типы | N683 | 0.9 | Да | ||||||||
| Типы с изменяемой модификацией (VM) | N2778 | N/A | Да | ||||||||
| Назначенные инициализаторы | N494 | 3.0 | Да | Да | |||||||
| Непостоянные инициализаторы | 1.21 | N/A | |||||||||
| Идемпотентные cvr-квалификаторы | N505 | 3.0 | N/A | ||||||||
| Запятая в конце enumerator-list | 0.9 | Да | Да | ||||||||
| Шестнадцатеричные плавающие константы | N308 | 2.8 | Да | Да | |||||||
| Составные литералы | N716 | 3.1 | Да | Да | |||||||
| Среда чисел с плавающей точкой | частично | частично | |||||||||
| Требование усечения для делений знаковых целочисленных типов | N617 | 0.9 | N/A | ||||||||
Неявный
return
0
;
в
main()
функции
|
Да | Да | Да | ||||||||
| Объявления и операторы в произвольном порядке | N740 | 3.0 | Да | Да | |||||||
| init-statement в for циклах | Да | Да | Да | ||||||||
| inline функции | N741 | 4.3 | Да | Да | |||||||
| Предопределённая переменная __func__ | N611 | 2.95 | Да | Да | |||||||
| Cvr-квалификаторы и static в [ ] в объявлениях функций | 3.1 | Да | |||||||||
| Вариативные макросы | N707 | 2.95 | Да | Да | |||||||
| _Pragma оператор препроцессора | N634 | 3.0 | Да | частично * | |||||||
| Стандартные прагмы для вычислений с плавающей точкой |
N631
N696 |
Нет | Нет | ||||||||
|
Функция C99 |
Документ(ы) |
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|
Смотрите также
|
C++ documentation
для
compiler support
|