Кодирование подмножеств правила, проверенных рано в анализе

В начальной фазе компиляции анализа Polyspace® проверяет тех, которые кодируют правила, которые не требуют части обнаружения ошибки времени выполнения анализа. Если вы хотите только те проверяемые правила, можно выполнить намного более быстрый анализ.

Программное обеспечение обеспечивает два предопределенных подмножества правил, что оно проверяет ранее в анализ. Подмножества доступны с опциями Check MISRA C:2004 (-misra2), Check MISRA AC AGC (-misra-ac-agc) и Check MISRA C:2012 (-misra3).

АргументЦель
single-unit-rules

Проверяйте правила, которые применяются только к одному модулям перевода.

Если вы обнаруживаете только кодирующие нарушения правила и выбираете это подмножество, анализ Средства поиска Ошибки останавливается после фазы компиляции.

system-decidable-rules

Проверяйте правила в подмножество single-unit-rules и некоторые правила, которые применяются к коллективному набору программных файлов. Дополнительные правила являются менее комплексными правилами, которые применяются в степени интеграции. Эти правила могут проверяться только в степени интеграции, потому что правила включают больше чем один модуль перевода.

Если вы обнаруживаете только кодирующие нарушения правила и выбираете это подмножество, анализ Средства поиска Ошибки останавливается после соединяющейся фазы.

См. также Проверку на Кодирование Нарушений Правила.

MISRA C: 2004 и правила AGC AC MISRA

Программное обеспечение проверяет следующие правила рано в анализ. Правила, которые проверяются в уровне системы и появляются только в подмножестве system-decidable-rules, обозначаются звездочкой.

Среда

ПравилоОписание
1.1*

Весь код должен приспособить ISO® 9899:1990 "Языкам программирования - C", исправил и исправленный ISO/IEC 9899/COR1:1995, ISO/IEC 9899/AMD1:1995 и ISO/IEC 9899/COR2:1996.

Расширения языка

ПравилоОписание
2.1

Ассемблер должен инкапсулироваться и изолироваться.

2.2

Исходный код должен только использовать комментарии стиля /* */.

2.3

Последовательность символов /* не должна использоваться в рамках комментария.

Документация

ПравилоОписание
3.4

Все использование директивы #pragma должно быть зарегистрировано и объяснено.

Наборы символов

ПравилоОписание
4.1

Только те escape-последовательности, которые заданы в стандарте ISO C, должны использоваться.

4.2

Trigraphs не должен использоваться.

Идентификаторы

ПравилоОписание
5.1*

Идентификаторы (внутренний и внешний) не должны полагаться на значение больше чем 31 символа.

5.2

Идентификаторы во внутреннем осциллографе не должны использовать то же имя в качестве идентификатора во внешнем осциллографе, и поэтому скрыть тот идентификатор.

5.3*

Имя определения типа должно быть уникальным идентификатором.

5.4*

Имя тега должно быть уникальным идентификатором.

5.5*

Никакой объектный или функциональный идентификатор со статической продолжительностью хранения не должен быть снова использован.

5.6*

Никакой идентификатор в одном пространстве имен не должен иметь то же написание как идентификатор в другом пространстве имен, за исключением имен члена профсоюза и структуры.

5.7*

Никакое имя идентификатора не должно быть снова использовано.

Типы

ПравилоОписание
6.1

Простой символьный тип должен использоваться только для устройства хранения данных и использования символьных значений.

6.2

Подписанный и символьный тип без знака должен использоваться только для устройства хранения данных и использования числовых значений.

6.3

typedef s, которые указывают на размер и со знаком, должен использоваться вместо основных типов.

6.4

Битовые поля должны только быть заданы, чтобы иметь тип unsigned int или signed int.

6.5

Битовые поля типа signed int должны быть по крайней мере 2 бита длиной.

Константы

ПравилоОписание
7.1

Восьмеричные константы (кроме нуля) и восьмеричные escape-последовательности не должны использоваться.

Объявления и определения

ПравилоОписание
8.1

Функции должны иметь объявления прототипа, и прототип должен быть видим в обоих функциональное определение и вызов.

8.2

Каждый раз, когда объект или функция объявлены или заданы, ее тип должен быть явным образом утвержден.

8.3

Для каждого параметра функции тип, данный в объявлении и определении, должен быть идентичным, и типы возврата должны также быть идентичными.

8.4*

Если объекты или функции будут объявлены несколько раз, то их типы должны быть совместимыми.

8.5

Не должно быть никаких определений объектов или функций в заголовочном файле.

8.6

Функции должны всегда объявляться в осциллографе файла.

8.7

Объекты должны быть заданы в области действия блока, если к ним только получат доступ из одной функции.

8.8*

Внешний объект или функция должны быть объявлены в одном файле и только одном файле.

8.9*

Идентификатор с внешней связью должен иметь точно одно внешнее определение.

8.10*

Все объявления и определения объектов или функций в осциллографе файла должны иметь внутреннюю связь, если внешняя связь не будет требоваться.

8.11

Спецификатор класса памяти static должен использоваться в определениях и объявлениях объектов и функций, которые имеют внутреннюю связь

8.12

Когда массив будет объявлен с внешней связью, ее размер должен быть утвержден явным образом или задан неявно инициализацией.

Инициализация

ПравилоОписание
9.2

Фигурные скобки должны использоваться, чтобы указать и совпадать со структурой в ненулевой инициализации массивов и структурами.

9.3

В списке перечислителей построение = не должно использоваться, чтобы явным образом инициализировать участников кроме первого, если все элементы не будут явным образом инициализированы.

Арифметическое преобразование типов

ПравилоОписание
10.1

Значение выражения целочисленного типа не должно быть неявно преобразовано в различный базовый тип если:

  • Это не преобразование в более широкий целочисленный тип того же самого, со знаком, или

  • Выражение является комплексным, или

  • Выражение не является постоянным и является аргументом функции, или

  • Выражение не является постоянным и является выражением возврата

10.2

Значение выражения типа с плавающей точкой не должно быть неявно преобразовано в другой тип если

  • Это не преобразование в более широкий тип с плавающей точкой, или

  • Выражение является комплексным, или

  • Выражение является аргументом функции, или

  • Выражение является выражением возврата

10.3

Значение сложного выражения целочисленного типа может только быть брошено к типу, который является более узким и того же самого, со знаком как базовый тип выражения.

10.4

Значение сложного выражения типа плавающего может только быть брошено к более узкому типу с плавающей точкой.

10.5

Если побитовый оператор, ~ и << применяются к операнду базового типа unsigned char или unsigned short, результат, должен быть сразу брошен к базовому типу операнда

10.6

Суффикс "U" должен быть применен ко всем константам типов unsigned.

Преобразование типа указателя

ПравилоОписание
11.1

Преобразование не должно выполняться между указателем на функцию и любым типом кроме целочисленного типа.

11.2

Преобразование не должно выполняться между указателем на объект и любым типом кроме целочисленного типа, другим указателем на тип объекта или указателем на void.

11.3

Бросок не должен быть выполнен между типом указателя и целочисленным типом.

11.4

Бросок не должен быть выполнен между указателем на тип объекта и различным указателем на тип объекта.

11.5

Бросок не должен выполняться, который удаляет любой const или проверку volatile от типа, обращенного указателем

Выражения

ПравилоОписание
12.1

Ограниченная зависимость должна быть помещена в правила приоритета оператора К в выражениях.

12.3

Оператор sizeof не должен использоваться по выражениям, которые содержат побочные эффекты.

12.5

Операнды логического && или || должны быть первичными выражениями.

12.6

Операнды логических операторов (&&, || и !) должны быть эффективно булевыми. Выражение, которые являются эффективно булевыми, не должно использоваться в качестве операндов к операторам кроме (&&, || или !).

12.7

Побитовые операторы не должны быть применены к операндам, базовый тип которых подписывается.

12.9

Оператор унарный минус не должен быть применен к выражению, базовый тип которого без знака.

12.10

Оператор запятой не должен использоваться.

12.11

Оценка постоянного выражения без знака не должна вести, чтобы повториться.

12.12

Базовые битные представления значений с плавающей точкой не должны использоваться.

12.13

Шаг (++) и декремент (--) операторы не должен быть смешан с другими операторами в выражении

Управляйте выражениями оператора

ПравилоОписание
13.1

Операторы присваивания не должны использоваться в выражениях тот урожай булевы значения.

13.2

Тесты значения против нуля должны быть сделаны явными, если операнд не является эффективно булевым.

13.3

Выражения с плавающей точкой не должны быть протестированы на равенство или неравенство.

13.4

Выражение управления оператора for не должно содержать объекты типа с плавающей точкой.

13.5

Три выражения оператора for должны быть затронуты только с управлением циклом.

13.6

Числовые переменные, используемые в цикле for для подсчета итерации, не должны быть изменены в теле цикла.

Поток управления

ПравилоОписание
14.3

Все непустые операторы должны быть также

  • имейте по крайней мере один побочный эффект, однако выполняемый, или

  • заставьте поток управления изменяться.

14.4

Оператор goto не должен использоваться.

14.5

Оператор continue не должен использоваться.

14.6

Для любого оператора цикла должно быть самое большее используемое завершение цикла for оператора один break.

14.7

Функция должна иметь одну точку выхода в конце функции.

14.8

Оператор, формирующий тело switch, while, оператор do while или for должен быть составным оператором.

14.9

if (выражение) построение должен сопровождаться составным оператором. Ключевое слово else должно сопровождаться или составным оператором или другим оператором if.

14.10

Все построения if else if должны содержать итоговый пункт else.

Операторы switch

ПравилоОписание
15.0

Недостижимый код обнаруживается между оператором switch и первым case.

15.1

Метка switch должна только использоваться, когда наиболее тесно заключающий составной оператор будет телом оператора switch

15.2

Безусловный оператор break должен отключить каждый непустой пункт switch.

15.3

Итоговый пункт оператора switch должен быть пунктом default.

15.4

Выражение switch не должно представлять значение, которое является эффективно булевым.

15.5

Каждый оператор switch должен иметь по крайней мере один пункт case.

Функции

ПравилоОписание
16.1

Функции не должны быть заданы с переменными количествами аргументов.

16.3

Идентификаторы должны быть даны для всех параметров в объявлении прототипа функции.

16.4*

Идентификаторы, используемые в объявлении и определении функции, должны быть идентичными.

16.5

Функции без параметров должны быть объявлены с типом параметра void.

16.6

Количество аргументов, переданных функции, должно совпадать с количеством параметров.

16.8

Все выходные пути от функции с non-void возвращаются, тип должен иметь явный оператор возврата с выражением.

16.9

Функциональный идентификатор должен только использоваться или с предыдущим &, или с заключенным в скобки списком параметров, который может быть пустым.

Указатели и массивы

ПравилоОписание
17.4

Индексация массива должна быть единственной позволенной формой адресной арифметики с указателями.

17.5

Тип не должен содержать больше чем 2 уровня косвенности указателя.

Структуры и объединения

ПравилоОписание
18.1

Вся структура или типы объединения должны быть завершены в конце модуля перевода.

18.4

Объединения не должны использоваться.

Предварительная обработка директив

ПравилоОписание
19.1

Операторам #include в файле должны только предшествовать другие директивы препроцессоров или комментарии.

19.2

Нестандартные символы не должны происходить на имена заголовочного файла в директивах #include.

19.3

Директива #include должна сопровождаться или <имя файла> или последовательность "имени файла".

19.4

C макросы только расширюсь до заключенного в фигурные скобки инициализатора, константы, заключенного в скобки выражения, спецификатора типа, спецификатора класса памяти, или построение "делает в то время как нуль".

19.5

Макросами не должен быть #define d и #undef d в блоке.

19.6

#undef не должен использоваться.

19.7

Функция должна использоваться в предпочтении к функциональному подобному макросу.

19.8

Подобный функции макрос не должен быть вызван безо всех его аргументов.

19.9

Аргументы к подобному функции макросу не должны содержать лексемы, которые похожи на предварительную обработку директив.

19.10

В определении подобного функции макроса каждый экземпляр параметра должен быть заключен в круглые скобки, если это не будет использоваться в качестве операнда # или ##.

19.11

Все макро-идентификаторы в директивах препроцессору должны быть заданы перед использованием, кроме #ifdef и директив препроцессору #ifndef и оператора defined().

19.12

Должно быть самое большее одно вхождение # или операторов препроцессора ## в одном макроопределении.

19.13

# и операторы препроцессора ## не должны использоваться.

19.14

Заданный оператор препроцессора должен только использоваться в одной из двух стандартных форм.

19.15

Меры предосторожности должны быть приняты в порядке предотвратить содержимое заголовочного файла, включаемого дважды.

19.16

Предварительная обработка директив должна быть синтаксически значимой, даже когда исключено препроцессором.

19.17

Весь #else, #elif и директивы препроцессору #endif должны находиться в том же файле как #if или директива #ifdef, с которой они связаны.

Стандартные библиотеки

ПравилоОписание
20.1

Зарезервированные идентификаторы, макросы и функции в стандартной библиотеке, не должны быть заданы, переопределены или не определены.

20.2

Имена стандартных макросов библиотеки, объектов и функций не должны быть снова использованы.

20.4

Динамическое выделение памяти кучи не должно использоваться.

20.5

Ошибочный индикатор errno не должен использоваться.

20.6

Макро-offsetof, в библиотеке <stddef.h>, не должен использоваться.

20.7

Макрос setjmp и функция longjmp не должны использоваться.

20.8

Погрузочно-разгрузочное оборудование сигнала <signal.h> не должно использоваться.

20.9

Библиотека <stdio.h> ввода/вывода не должна использоваться в производственном коде.

20.10

Библиотечные функции atof, atoi и atoll от библиотеки <stdlib.h> не должны использоваться.

20.11

Библиотечные функции abort, exit, getenv и system от библиотеки <stdlib.h> не должны использоваться.

20.12

Функции обработки времени библиотеки <time.h> не должны использоваться.

Правила, которые проверяются в уровне системы и появляются только в подмножестве system-decidable-rules, обозначаются звездочкой.

MISRA C: 2 012 правил

Программное обеспечение проверяет следующие правила рано в анализ. Правила, которые проверяются в уровне системы и появляются только в подмножестве system-decidable-rules, обозначаются звездочкой.

Стандарт C среда

ПравилоОписание
1.1

Программа не должна содержать нарушения стандартного Синтаксиса C и ограничения, и не должна превышать пределы перевода реализации.

1.2

Расширения языка не должны использоваться.

Неиспользованный код

ПравилоОписание
2.3*

Проект не должен содержать неиспользованные описания типа.

2.4*

Проект не должен содержать неиспользованные объявления тега.

2.5*

Проект не должен содержать неиспользованные макро-объявления.

2.6

Функция не должна содержать неиспользованные описания меток.

2.7

В функциях не должно быть никаких неиспользованных параметров.

Комментарии

ПравилоОписание
3.1

Последовательности символов /* и // не должны использоваться в рамках комментария.

3.2

Соединение строки не должно использоваться в комментариях //.

Наборы символов и лексические соглашения

ПравилоОписание
4.1

Должны быть отключены восьмеричные и шестнадцатеричные escape-последовательности.

4.2

Trigraphs не должен использоваться.

Идентификаторы

ПравилоОписание
5.1*

Внешние идентификаторы должны быть отличными.

5.2

Идентификаторы, объявленные в том же осциллографе и пространстве имен, должны быть отличными.

5.3

Идентификатор, объявленный во внутреннем осциллографе, не должен скрывать идентификатор, объявленный во внешнем осциллографе.

5.4

Макро-идентификаторы должны быть отличными.

5.5

Идентификаторы должны быть отличны от макро-имен.

5.6*

Имя определения типа должно быть уникальным идентификатором.

5.7*

Имя тега должно быть уникальным идентификатором.

5.8*

Идентификаторы, которые задают объекты или функции с внешней связью, должны быть уникальными.

5.9*

Идентификаторы, которые задают объекты или функции с внутренней связью, должны быть уникальными.

Типы

ПравилоОписание
6.1

Битовые поля должны только быть объявлены с соответствующим типом.

6.2

Одноразрядные именованные битовые поля не должны иметь типа со знаком.

Литералы и константы

ПравилоОписание
7.1

Восьмеричные константы не должны использоваться.

7.2

Суффикс "u" или "U" должен быть применен ко всем целочисленным константам, которые представлены в типе без знака.

7.3

Символ нижнего регистра "l" не должен использоваться в литеральном суффиксе.

7.4

Строковый литерал не должен быть присвоен объекту, если тип объекта не будет "указателем на квалифицированный к const char".

Объявления и определения

ПравилоОписание
8.1

Типы должны быть явным образом заданы.

8.2

Функциональные типы должны быть в прототипной форме с именованными параметрами.

8.3*

Все объявления объекта или функции должны использовать те же имена и ввести спецификаторы.

8.4

Совместимое объявление должно быть видимо, когда объект или функция с внешней связью будут заданы.

8.5*

Внешний объект или функция должны быть объявлены однажды в одном и только одном файле.

8.6*

Идентификатор с внешней связью должен иметь точно одно внешнее определение.

8.7*

Функции и объекты не должны быть заданы с внешней связью, если на них ссылаются только в одном модуле перевода.

8.8

Спецификатор класса памяти static должен использоваться во всех объявлениях объектов и функций, которые имеют внутреннюю связь.

8.9*

Объект должен быть задан в области действия блока, если ее идентификатор только появляется в одной функции.

8.10

Подставляемая функция должна быть объявлена с классом памяти static.

8.11

Когда массив с внешней связью объявляется, ее размер должен быть явным образом задан.

8.12

В рамках списка перечислителей значение неявно заданного постоянного перечисления должно быть уникальным.

8.14

Спецификатор типа restrict не должен использоваться.

Инициализация

ПравилоОписание
9.2

Инициализатор для агрегата или объединения должен быть заключен в фигурные скобки.

9.3

Массивы не должны быть частично инициализированы.

9.4

Элемент объекта не должен быть инициализирован несколько раз.

9.5

Где обозначенные инициализаторы используются, чтобы инициализировать объект массивов, что размер массива должен быть задан явным образом.

Существенная модель типа

ПравилоОписание
10.1

Операнды не должны иметь несоответствующего существенного типа.

10.2

Выражения чрезвычайно типа символов не должны использоваться неуместно, кроме того, и операции вычитания.

10.3

Значение выражения не должно быть присвоено объекту с более узким существенным типом или различной существенной категории типа.

10.4

Оба операнда оператора, в котором выполняются обычные арифметические преобразования, должны иметь ту же существенную категорию типа.

10.5

Значение выражения не должно быть брошено к несоответствующему существенному типу.

10.6

Значение составного выражения не должно быть присвоено объекту с более широким существенным типом.

10.7

Если составное выражение будет использоваться в качестве одного операнда оператора, в котором обычные арифметические преобразования выполняются затем, то другой операнд не должен иметь более широкого существенного типа.

10.8

Значение составного выражения не должно быть брошено к различной существенной категории типа или более широкому существенному типу.

Преобразование типа указателя

ПравилоОписание
11.1

Преобразования не должны выполняться между указателем на функцию и любым другим типом.

11.2

Преобразования не должны выполняться между указателем на неполный тип и любым другим типом.

11.3

Бросок не должен выполняться между указателем на тип объекта и указателем на различный тип объекта.

11.4

Преобразование не должно быть выполнено между указателем на объект и целочисленным типом.

11.5

Преобразование не должно быть выполнено от указателя, чтобы освободить в указатель на объект.

11.6

Бросок не должен выполняться между указателем на пустоту и арифметическим типом.

11.7

Бросок не должен выполняться между указателем на объект и типом арифметики нецелого числа.

11.8

Бросок не должен удалять const или энергозависимую проверку от типа, на который указывает указатель.

11.9

Макро-NULL должен быть единственной разрешенной формой целочисленного постоянного нулевого указателя.

Выражения

ПравилоОписание
12.1

Приоритет операторов в рамках выражений должен быть сделан явным.

12.3

Оператор запятой не должен использоваться.

12.4

Оценка константных выражений не должна приводить к переносу беззнаковых целых чисел.

Побочные эффекты

ПравилоОписание
13.3

Полное выражение, содержащее шаг (++) или декремент (--) оператор, не должно иметь никаких других потенциальных побочных эффектов кроме вызванного инкрементным или оператором понижения.

13.4

Результат оператора присваивания не должен использоваться.

13.6

Операнд оператора sizeof не должен содержать выражение, которое имеет потенциальные побочные эффекты.

Управляйте выражениями оператора

ПравилоОписание
14.4

Выражение управления оператора if и выражение управления оператора цикла должны иметь по существу булев тип.

Поток управления

ПравилоОписание
15.1

Оператор goto не должен использоваться.

15.2

Оператор goto должен перейти к метке, объявленной позже в той же функции.

15.3

Любая метка, на которую ссылается оператор goto, должна быть объявлена в том же блоке, или в любом блоке, заключающем оператор goto.

15.4

Должен быть не больше, чем один оператор break или goto, используемый, чтобы отключить любой оператор цикла.

15.5

Функция должна иметь одну точку выхода в конце

15.6

Тело оператора цикла или оператора выбора должно быть составным оператором.

15.7

Все построения if … else if должны быть отключены с оператором else.

Операторы switch

ПравилоОписание
16.1

Все операторы switch должны быть правильно построены.

16.2

Метка switch должна только использоваться, когда наиболее тесно заключающий составной оператор будет телом оператора switch.

16.3

Безусловный оператор break должен отключить каждый switch - пункт.

16.4

Каждый оператор switch должен иметь метку default.

16.5

Метка default должна появиться или как первое или как последняя метка switch оператора switch.

16.6

Каждый оператор switch должен иметь по крайней мере два switch - пункты.

16.7

switch - выражение не должно иметь по существу булева типа.

Функции

ПравилоОписание
17.1

Функции <starg.h> не должны быть использованы.

17.3

Функция не должна быть объявлена неявно.

17.4

Все выходные пути от функции с non-void возвращаются, тип должен иметь явный оператор возврата с выражением.

17.6

Объявление параметра массива не должно содержать ключевое слово static между [ ].

17.7

Значение, возвращенное функцией, имеющей non-void, возвращается, тип должен использоваться.

Указатели и массивы

ПравилоОписание
18.4

+, -, += и операторы -= не должны быть применены к выражению типа указателя.

18.5

Объявления должны содержать не больше, чем два уровня вложения указателя.

18.7

Участники массива с переменными границами не должны быть объявлены.

18.8

Типы массива переменной длины не должны использоваться.

Наложение устройства хранения данных

ПравилоОписание
19.2

Ключевое слово union не должно использоваться.

Предварительная обработка директив

ПравилоОписание
20.1

Директивам #include должны только предшествовать директивы препроцессору или комментарии.

20.2

', ", или символы \ и /* или последовательности символов // не должны происходить на имя заголовочного файла.

20.3

Директива #include должна сопровождаться или <имя файла> или \"имя файла \" последовательность.

20.4

Макрос не должен быть задан с тем же именем как ключевое слово.

20.5

#undef не должен использоваться.

20.6

Лексемы, которые похожи на директиву предварительной обработки, не должны происходить в макро-аргументе.

20.7

Выражения, следующие из расширения макро-параметров, должны быть заключены в круглые скобки.

20.8

Выражение управления #if или директивы предварительной обработки #elif должно оценить к 0 или 1.

20.9

Всеми идентификаторами, используемыми в выражении управления #if или директив предварительной обработки #elif, должен быть #define 'd перед оценкой.

20.10

# и операторы препроцессора ## не должны использоваться.

20.11

Макро-параметр сразу после оператора # не должен сразу сопровождаться оператором ##.

20.12

Макро-параметр, используемый в качестве операнда к # или операторам ##, который самостоятельно подвергается дальнейшей макро-замене, должен только использоваться в качестве операнда к этим операторам.

20.13

Строка, первой лексемой которой является #, должна быть допустимой директивой предварительной обработки.

20.14

Весь #else, #elif и директивы препроцессору #endif должны находиться в том же файле как #if, #ifdef или директива #ifndef, с которой они связаны.

Стандартные библиотеки

ПравилоОписание
21.1

#define и #undef не должны использоваться на зарезервированном идентификаторе или зарезервировали макро-имя.

21.2

Зарезервированный идентификатор или макро-имя не должны быть объявлены.

21.3

Функции выделения памяти и освобождения <stdlib.h> не должны использоваться.

21.4

Стандартный заголовочный файл <setjmp.h> не должен использоваться.

21.5

Стандартный заголовочный файл <signal.h> не должен использоваться.

21.6

Стандартные функции ввода/вывода Библиотеки не должны использоваться.

21.7

atof, atoi, atol и функции atoll <stdlib.h> не должны использоваться.

21.8

Библиотечные функции abort, exit, getenv и system <stdlib.h> не должны использоваться.

21.9

Библиотечные функции bsearch и qsort <stdlib.h> не должны использоваться.

21.10

Стандартные функции времени и даты Библиотеки не должны использоваться.

21.11

Стандартный заголовочный файл <tgmath.h> не должен использоваться.

21.12

Функции обработки исключений <fenv.h> не должны быть использованы.

Правила, которые проверяются в уровне системы и появляются только в подмножестве system-decidable-rules, обозначаются звездочкой.

Смотрите также

| |

Похожие темы