C++ 如何正确使用C++;在没有中断的情况下切换语句?

C++ 如何正确使用C++;在没有中断的情况下切换语句?,c++,c++17,C++,C++17,我在以下代码段中遇到错误: case id_report: if (iM == INITIATE) { *out_MSG = RSRC_UP; return RSRC_UP; } [[fallthrough]]; case id_initiate: if (iMessageType == INITIATE) { *

我在以下代码段中遇到错误:

   case id_report:
        if (iM == INITIATE)
        {
            *out_MSG = RSRC_UP;
            return RSRC_UP;
        }
        [[fallthrough]];

    case id_initiate:
        if (iMessageType == INITIATE)
        {
            *policyIdx = RSRC_RQST;
            *out_MSG = STATUS_RQST;
            return STATUS_RQST;
        }
        [[fallthrough]];
编译后,我得到以下erorr:

MegaUtil.c:915:13: error: expected expression before ‘[’ token
             [[fallthrough]];
             ^
MegaUtil.c:915:15: error: ‘fallthrough’ undeclared (first use in this function)
             [[fallthrough]];
似乎我没有正确使用fallthrough。 我该如何解决这个问题


谢谢。

我发现我缺少@HolyBlackCat所提到的std=c++17标志。

我发现我缺少@HolyBlackCat所提到的std=c++17标志。

你在病例id报告后缺少一个冒号。这应该可以解决问题,因为其他一切看起来都很好。我认为这是在这个问题中编写代码片段时的输入错误。如果您正确使用它,我会纠正错误。您是否缺少
-std=c++17
标志,或者您的编译器太旧了?我确实遵循了此文档,但我不确定哪里出了问题。你看,我也做了同样的事情..你在病例id报告后丢失了一个冒号。这应该可以解决问题,因为其他一切看起来都很好。我认为这是在这个问题中编写代码片段时的输入错误。如果您正确使用它,我会纠正错误。您是否缺少
-std=c++17
标志,或者您的编译器太旧了?我确实遵循了此文档,但我不确定哪里出了问题。你看,我也这么做了。