Есть ли у 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;

Отключить предупреждения неиспользуемых переменных. Вы можете использовать переменную после этого макроса без каких-либо проблем.

Однако, если вы передаете выражение или что-то еще в макрос, и компилятор должен оценить выражение, оно может иметь побочные эффекты .