Есть ли у Q_UNUSED какие-либо побочные эффекты?
Учитывая следующий фрагмент кода:
void test(int var)
{
Q_UNUSED(var);
#ifdef SOMETHING
printf("%d",var);
//do something else with var...
#endif
}
Будет ли эффект макроса Q_UNUSED
, если я действительно использую переменную var в каком-либо сценарии (например, в примере выше) или вообще не имеет никакого эффекта, когда я подавляю предупреждения компилятора для неиспользуемых переменных?
Пока я наблюдаю, что это не имеет никакого эффекта, но я хотел бы убедиться.
Ответы
Ответ 1
Нет во многих случаях (например, просто передача простой переменной в макрос). Определение находится внутри qglobal.h
:
# define Q_UNUSED(x) (void)x;
Отключить предупреждения неиспользуемых переменных. Вы можете использовать переменную после этого макроса без каких-либо проблем.
Однако, если вы передаете выражение или что-то еще в макрос, и компилятор должен оценить выражение, оно может иметь побочные эффекты †.