Любое заданное реализацией поведение, от которого зависит выход программы, должно быть зарегистрировано и изучено
Любое заданное реализацией поведение, от которого зависит выход программы, должно быть зарегистрировано и изучено.
Построение кода задало реализацией поведение, если стандарт C позволяет компиляторам выбирать свои собственные спецификации для построения. Полный список заданного реализацией поведения доступен в Приложении J.3 стандартного ISO/IEC 9899:1999 (C99) и в Приложении G.3 стандартного ISO/IEC 9899:1990 (C90).
Если вы понимаете и документ все заданное реализацией поведение, вас можно уверить, что весь выход вашей программы является намеренным и не произведенный случайно.
Анализ обнаруживает следующие возможности заданного реализацией поведения в C99 и их дубликатов в C90. Если вы знаете поведение своей реализации компилятора, выравниваете по ширине результат анализа с соответствующими комментариями. Чтобы выровнять по ширине результат, присвойте одно из этих состояний: Justified
, No action planned
, или Not a defect
.
К массе - выравнивают по ширине все результаты, которые показывают на то же заданное реализацией поведение, используют столбец Detail на панели Results List. Кликните по заголовку столбца так, чтобы все результаты с той же записью группировались. Выберите первый результат и затем выберите последний результат при содержании Shift
ключ. Присвойте состояние одному из результатов. Если вы не видите столбец Detail, щелкните правой кнопкой по любому другому заголовку столбца и включите этот столбец.
Приложение стандарта C99 касательно | Поведение, которое будет зарегистрировано | Как Polyspace® Helps |
---|---|---|
J.3.2: Среда | Альтернативный способ, в который main функция может быть задана. |
Анализ отмечает int main(void) { ... } int main(int argc, char *argv[]) { ... } Смотрите раздел 5.1.2.2.1 из Стандарта C99. |
J.3.2: Среда | Набор имен среды и метода для изменения списка сред используется getenv функция. |
Анализ отмечает использование Смотрите раздел 7.20.4.5 из Стандарта C99. |
J.3.6: плавающая точка | Округляющиеся поведения охарактеризованы нестандартными значениями FLT_ROUNDS . |
Анализ отмечает включать Смотрите раздел 5.2.4.2.2 из Стандарта C99. |
J.3.6: плавающая точка | Методы оценки охарактеризованы нестандартными отрицательными величинами FLT_EVAL_METHOD . |
Анализ отмечает включать Смотрите раздел 5.2.4.2.2 из Стандарта C99. |
J.3.6: плавающая точка | Направление округления, когда целое число преобразовано в число с плавающей запятой, которое не может точно представлять исходное значение. |
Анализ отмечает преобразования от целого числа до типов данных с плавающей точкой меньшего размера (например, 64-битный Смотрите раздел 6.3.1.4 из Стандарта C99. |
J.3.6: плавающая точка | Направление округления, когда число с плавающей запятой преобразовано в более узкое число с плавающей запятой. |
Анализ отмечает эти преобразования:
Смотрите раздел 6.3.1.5 из Стандарта C99. |
J.3.6: плавающая точка | Состояние по умолчанию для FENV_ACCESS прагма. |
Анализ отмечает использование прагмы кроме: #pragma STDC FENV_ACCESS ON #pragma STDC FENV_ACCESS OFF Смотрите раздел 7.6.1 из Стандарта C99. |
J.3.6: плавающая точка | Состояние по умолчанию для FP_CONTRACT прагма. |
Анализ отмечает использование прагмы кроме: #pragma STDC FP_CONTRACT ON #pragma STDC FP_CONTRACT OFF Смотрите раздел 7.12.2 из Стандарта C99. |
J.3.11: предварительная обработка директив | Поведение на каждом распознало non-STDC #pragma директива. |
Анализ отмечает использование прагмы: #pragma pp-tokens STDC сразу не делает followpragma . Например:#pragma FENV_ACCESS ON Смотрите раздел 6.10.6 из Стандарта C99. |
J.3.12: Библиотечные функции | Ли feraiseexcept функционируйте повышает ''неточное'' исключение с плавающей точкой в дополнение к ''переполнению'', или ''недостаточно заполните'' исключение с плавающей точкой. |
Анализ отмечает вызовы Смотрите раздел 7.6.2.3 из Стандарта C99. |
J.3.12: Библиотечные функции | Строки кроме "C" и "" это может быть передано в качестве второго аргумента setlocale функция. |
Анализ отмечает вызовы Смотрите раздел 7.11.1.1 из Стандарта C99. |
J.3.12: Библиотечные функции | Типы заданы для float_t и double_t когда значение FLT_EVAL_METHOD макрос меньше 0 или больше, чем 2. |
Анализ отмечает включать Смотрите раздел 7.12 из Стандарта C99. |
J.3.12: Библиотечные функции | Основа 2 логарифма модуля используется the remquo функции в сокращении частного. |
Анализ отмечает вызовы Смотрите раздел 7.12.10.3 из Стандарта C99. |
J.3.12: Библиотечные функции | Состояние завершения, возвращенное в серверную среду abort выход , или _Exit функция. |
Анализ отмечает вызовы Смотрите разделы 7.20.4.1, 7.20.4.3 или 7.20.4.4 из Стандарта C99. |
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
Группа: реализация |
Категория: необходимый |
Категория AGC: необходимый |
Язык: C90, C99 |