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