Макросы C++ должны только использоваться для: включайте защиту, введите спецификаторы или спецификаторы класса памяти
Примечание
Используйте Bug Finder вместо Code Prover для проверки правил кодирования. Поддержка кодирования правил, регистрируясь в Code Prover будет удалена в будущем релизе. См. Вопросы совместимости.
Макросы C++ должны только использоваться для: включайте защиту, введите спецификаторы или спецификаторы класса памяти.
Кроме определения включают защиту, вводят спецификаторы и классификаторы класса памяти, вы можете использовать макросы C++ для других целей, таких как определение констант или подобных функции макросов. Они макросы не выполняют типичное рычажное устройство и механизм определения объема отсутствия или безопасность типов. По сравнению с доступными альтернативами на C++ макросы менее безопасны. Например, константа, заданная при помощи #define оператор сохраняет свое значение через все осциллографы, даже если он задан в локальном осциллографе. Используя макрос вместо constexpr может привести к беспорядку, если вы задаете константу по-другому в различных осциллографах. Поскольку constexpr переменная обеспечивает четко определенный осциллограф, это - более безопасная альтернатива. constexpr эффективно, потому что это - постоянное время компиляции.
Избегайте макросов, если они не используются для определения, включают защиту, вводят спецификаторы и классификаторы класса памяти. Вместо этого используйте функции, такие как подставляемая функция, const или constexpr объекты и шаблоны функций.
Средство проверки отмечает #define операторы, где макросы расширяются до чего-то другого, чем, включают защиту, вводят спецификаторы или спецификаторы класса памяти, такие как staticвстроенный, volatile'auto', register, и const.
Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.
| Группа: предварительная обработка директив |
| Категория: необходимый |