Имя идентификатора объекта лица, не являющегося членом какой-либо организации, со статической продолжительностью хранения или статической функцией не должно быть снова использовано в пространстве имен.
Имя идентификатора объекта лица, не являющегося членом какой-либо организации, со статической продолжительностью хранения или статической функцией не должно быть снова использовано в пространстве имен.
Вы используете пространства имен, чтобы сузить осциллограф идентификаторов, которые вы объявляете в этих пространствах имен. Это препятствует тому, чтобы эти идентификаторы были ошибочны с идентичными идентификаторами в других осциллографах. Если вы снова используете идентификатор со статической продолжительностью хранения в том же пространстве имен через исходные файлы, вы можете перепутать один идентификатор для другого.
Когда вы снова используете идентификаторы, Polyspace® отмечает последнее использование идентификатора, если они находятся в том же модуле перевода. Если идентификаторы находятся в отдельных файлах, идентификатор в последнем пути к файлу алфавитным порядком отмечается.
Однако, если вы снова используете идентификатор, но объявляете только один экземпляр идентификатора с ключевым словом static
, тот идентификатор отмечается независимо от порядка, в котором объявляются идентификаторы.
Polyspace не повышает нарушения, если вы объявляете идентификатор в пространстве имен, и вы снова используете тот идентификатор в том же пространстве имен, но во вложенном или встроенном пространстве имен. Например, никакое нарушение не повышено на reusedVar
в этом фрагменте кода.
//file1.cpp namespace foo { static int reusedVar; //resuedVar has static storage duration } //file2.cpp namespace foo { void func(); namespace nested_foo { float reusedVar; } inline namespace inlined_foo { char reusedVar; } }
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
Группа: Лексические соглашения |
Категория: необходимый, автоматизированный |