在重新定义虚方法的过程中,在不使用单个参数的情况下,为了避免编译器警告,可以省略参数的名称。例如:
bool MainWindow::nativeEvent(const QByteArray&,
void *message,
long *)
但是,从 开始С++17
,出现了属性,其中之一是[[maybe_unused]]
。它允许您像这样重写上面的代码:
bool MainWindow::nativeEvent([[maybe_unused]] const QByteArray& eventType,
void *message,
[[maybe_unused]] long *result)
一个简单的问题,这个“创新”有什么用?到目前为止,我看到代码只是在增长。好吧,作为最后的手段,在调试模式下使用该参数,而不是在发布时使用它。
这是条件编译所必需的:
添加
以前
[[maybe_unused]]
,为了抑制有关未使用参数/变量的警告,您必须从系列中添加黑客(void)result;
或完全禁用它。一个特殊但常见的用例是宏
assert()
,通常声明如下:详细信息也可以在 C++ 标准委员会的原始提案 [ PDF ] 中找到。
[maybe_unused]
顾名思义,不需要总是未使用的实体,而是可能未使用的实体。如果您在此处删除属性,则可能会出现警告。
另一个常见的用例是
assert()
,您可以在@Fat-Zer 的回答中了解更多信息。