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