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 |
| Влияние: Низкое |