gpt4 book ai didi

c++ - 如何仅针对一个开关盒 block 禁用 "enumeration value not explicitly handled in switch"?

转载 作者:行者123 更新时间:2023-11-30 04:55:35 24 4
gpt4 key购买 nike

你能告诉我如何仅针对一个开关/案例 block 禁用编译器/代码模型警告吗?

总的来说,我认为被警告是非常有用的,但这里它提示 167 个枚举值没有在 switch 中显式处理。

我发现了另一个问题:

c++ warning: enumeration value not handled in switch [-Wswitch]

它说您可以使用 default: break; 摆脱警告,但在这种情况下(最近的 QtCreator with clang)这不适用。

我知道我可以将代码更改为 if/else if/else if .. 但我希望处理的案例列表会随着时间的推移而增长,所以我更愿意留在 开关/外壳

所以,我的问题是,是否有任何关键字/宏/注释/属性表示只忽略这个单个 block 的问题?

以下代码产生警告,其他 167 个值似乎是 QEvent::type() 的可能返回值,它们是 Qt 的一部分:

bool MyClass::event(QEvent * e) {
switch(e->type()) {
case QEvent::HoverEnter:
qDebug() << "enter";
return true;
case QEvent::HoverLeave:
qDebug() << "leave";
return true;
case QEvent::HoverMove:
qDebug() << "move";
return true;
default:
break;
}
return Piece::event(e);
}

最佳答案

正如 user463035818 在评论中指出的,可以通过添加 #pragma 来禁用特定部分代码的消息:

bool MyClass::event(QEvent * e) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wswitch"
switch(e->type()) {
case QEvent::HoverEnter:
qDebug() << "enter";
return true;
case QEvent::HoverLeave:
qDebug() << "leave";
return true;
case QEvent::HoverMove:
qDebug() << "move";
return true;
default:
break;
}
#pragma clang diagnostic pop
return Piece::event(e);
}

关于c++ - 如何仅针对一个开关盒 block 禁用 "enumeration value not explicitly handled in switch"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52955811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com