sizeof
операнд содержит выражение, которое не оценивается
Этот дефект возникает, когда sizeof
operand содержит выражения, оценка которых не влияет на 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++ |
По умолчанию: Off |
Синтаксис командной строки
: SIZEOF_USELESS_OP |
Влияние: Низкое |