ในส่วนของโค้ดต่อไปนี้ฉันใช้[[fallthrough]]
แอตทริบิวต์มาตรฐานจาก C ++ 1z เพื่อจัดทำเอกสารว่าต้องการการล่มสลาย:
#include <iostream>
int main() {
switch (0) {
case 0:
std::cout << "a\n";
[[fallthrough]]
case 1:
std::cout << "b\n";
break;
}
}
ด้วย GCC 7.1 โค้ดจะคอมไพล์โดยไม่มีข้อผิดพลาด อย่างไรก็ตามคอมไพเลอร์ยังคงเตือนฉันเกี่ยวกับการล่มสลาย:
warning: this statement may fall through [-Wimplicit-fallthrough=]
std::cout << "a\n";
~~~~~~~~~~^~~~~~~~
ทำไม?