Препроцессор должен только использоваться для включения файла и включать защиту
Препроцессор должен только использоваться для включения файла и включать защиту.
Кроме включения и включают защиту, вы можете использовать директивы препроцессору для других целей, таких как определение констант или подобных функции макросов. Эти директивы препроцессору не выполняют типичное рычажное устройство и механизм определения объема отсутствия или безопасность типов. Директивы препроцессору менее безопасны по сравнению с эквивалентными функциями C++. Например, константа, заданная при помощи #define
оператор сохраняет свое значение через все осциллографы, даже если он задан в локальном осциллографе. Используя #define
препроцессор вместо constexpr
может привести к беспорядку, если вы задаете константу по-другому в различных осциллографах. Поскольку constexpr
переменная обеспечивает четко определенный осциллограф, это - более безопасная альтернатива. constexpr
эффективно, потому что это - постоянное время компиляции.
Избегайте директив препроцессору, если они не используются для включения или включают защиту. Вместо этого используйте функции, такие как подставляемые функции, const
или constexpr
объекты и шаблоны.
Polyspace® повышает нарушение этого правила во включенном заголовочном файле, когда любое из этих условий верно:
#define
используется за пределами включать защиты. Они #define
операторы обычно задают константы и подобные функции макросы.
#ifndef
используется за пределами включать защиты.
Polyspace рассматривает эту идиому, когда правильные включают защитную идиому:
#ifndef <identifier> #define <identifier> #endif
Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.
Группа: предварительная обработка директив |
Категория: необходимый |