Trong đoạn mã sau, tôi sử dụng [[fallthrough]]
thuộc tính tiêu chuẩn từ C ++ 1z để ghi lại rằng mong muốn có một đường dự phòng:
#include <iostream>
int main() {
switch (0) {
case 0:
std::cout << "a\n";
[[fallthrough]]
case 1:
std::cout << "b\n";
break;
}
}
Với GCC 7.1, mã biên dịch không có lỗi. Tuy nhiên, trình biên dịch vẫn cảnh báo tôi về một lỗi:
warning: this statement may fall through [-Wimplicit-fallthrough=]
std::cout << "a\n";
~~~~~~~~~~^~~~~~~~
Tại sao?