Как правило, у вас есть три способа заставить замолчать предупреждение компилятора неиспользованных параметров:
Явно приведите неиспользуемые параметры к void:
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QWidget *widget)
{
(void)option;
(void)widget;
// ...
}
Этот шаблон соответствует стандарту и широко применяется.понимают программисты.Компиляторы, такие как GCC, видят, что параметр используется, поэтому не выдают предупреждение, и они оптимизировали эти строки, потому что они не используются (т.е. не имеют эффекта).
В качестве альтернативы, вы можете использовать Qt's Q_UNUSED
макрос:
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QWidget *widget)
{
Q_UNUSED(option);
Q_UNUSED(widget);
// ...
}
Для GCC и других он распространяется также на шаблон (void)
-cast, но может также включать обходные пути для неясных компиляторов, для которых этого недостаточно.Например, в Qt 5.4.1 он определен как:
#if defined(Q_CC_RVCT)
template <typename T>
inline void qUnused(T &x) { (void)x; }
# define Q_UNUSED(x) qUnused(x);
#else
# define Q_UNUSED(x) (void)x;
#endif
Использование Q_UNUSED
возможно легче для чтения и должно использоваться для вкладов в Qt.
Третий вариантзакомментируйте имена параметров:
void paint(QPainter *painter, const QStyleOptionGraphicsItem * /* option */,
QWidget * /* widget */)
{
// ...
}
Возможно, это сложнее для чтения.Кроме того, это, возможно, увеличивает соблазны полностью удалить имена параметров, что может усложнить понимание функции.При изменении кода, чтобы использовать ранее неиспользуемые параметры, этот стиль, конечно, также включает в себя больше операций редактирования, чем другие.