属性'fallthrough'不能在此上下文中应用

Nic*_*aus 7 c++ attributes c++17 visual-studio-2017

我正在尝试[[fallthrough]]在Visual Studio 2017中使用c ++ 17 属性:

Qt::ItemFlags flags = Qt::ItemIsSelectable;

switch (index.column())
{
case 0:
    flags |= Qt::ItemIsUserCheckable;
    break;
case 2:
    [[fallthrough]]
case 3:
    [[fallthrough]]
case 4:
    flags |= Qt::ItemIsEditable;
    break;
}
return flags;
Run Code Online (Sandbox Code Playgroud)

但我得到编译器错误:

属性'fallthrough'不能在此上下文中应用

这似乎是你可以使用的唯一背景[[fallthrough]]......我做错了什么?

Nic*_*aus 12

给出了这个神秘的错误,因为[[fallthrough]]属性需要分号才能终止它们.将case语句重写为

case 2:
    [[fallthrough]];
case 3:
    [[fallthrough]];
// ...
Run Code Online (Sandbox Code Playgroud)

解决了这个错误.

  • 要添加,属性需要附加到*something*,无论它是类,函数,语句......分号允许它应用于null语句. (6认同)
  • C++ 编译器及其奇怪的错误消息。 (2认同)