Идентификатор с внешней связью должен иметь точно одно внешнее определение
Идентификатор с внешней связью должен иметь точно одно внешнее определение.
Если вы используете идентификатор, для которого повторные определения существуют в различных файлах, или никакое определение не существует, поведение не определено.
Повторные определения в различных файлах не разрешены этим правилом, даже если определениями является то же самое.
Средство проверки отмечает повторные определения, только если определения происходят в различных файлах.
Средство проверки не рассматривает предварительные определения как определения. Например, следующий код не нарушает правило:
int val; int val=1;
Средство проверки не показывает нарушение, если функция не задана вообще, но объявлена с внешней связью и вызвана в исходном коде.
Polyspace® Bug Finder™ и Polyspace Code Prover™ проверяют это правило кодирования по-другому. Исследования могут привести к различным результатам.
Запрещенные повторные определения для функционального function_name
.
Запрещенный несколько предварительных определений для объекта object_name
.
Глобальная переменная variable_name
умножается заданный.
Функциональный function_name
умножается заданный.
Глобальная переменная имеет несколько предварительных определений.
Неопределенная глобальная переменная variable_name
.
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
Группа: объявления и определения |
Категория: необходимый |
Категория AGC: необходимый |
Язык: C90, C99 |