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