sizeof операнд содержит выражение, которое не вычисляется
Этот дефект возникает при sizeof операнд содержит выражения, оценка которых не влияет на sizeof результат. Вместо текущего выражения в sizeof операнд, тип данных, переменная или более простое выражение могли бы использоваться без потери функциональности.
В ситуациях, отмеченных этим дефектом, выражение в sizeof операнд является излишне сложным, снижает читаемость кода и увеличивает затраты на обслуживание. Выражение может также создать ложное впечатление о результате sizeof операнд.
Например, рассмотрим выражение:
sizeof(void (*[n])(int arr[U+V]))
sizeof является массивом n указатели функций, каждый типа void () (int*). Дополнительное U+V, что не оценивается, делает полное выражение ненужным усложнением. Выражение также создает ложное впечатление, что аргумент указателя функции является массивом размера U+V вопросы для sizeof результат.Первое событие в отслеживании дефектов показывает, где избыточная субэкспрессия sizeof начинается операнд.
Упростите или полностью удалите избыточное выражение. По возможности используйте тип данных в качестве sizeof операнд. Например, в предыдущем примере более простой эквивалент sizeof операция:
sizeof(void (*[n])(int*))
Если требуется вычислить выражение, выполните вычисление в отдельном операторе.
| Группа: Надлежащая практика |
| Язык: C | C++ |
| По умолчанию: Откл. |
Синтаксис командной строки:
SIZEOF_USELESS_OP |
| Воздействие: Низкий |