[英]How to do an explicit fall-through in C
較新版本的 gcc 提供了Wimplicit-fallthrough
,這對於大多數 switch 語句來說非常Wimplicit-fallthrough
。 但是,我有一個 switch 語句,我想在其中允許所有 case 語句失敗。
有沒有辦法做一個明確的失敗? 我寧願避免為此文件使用Wno-implicit-fallthrough
進行編譯。
編輯:我正在尋找一種方法來使失敗明確(如果可能的話),而不是通過編譯器開關或編譯指示關閉警告。
使用__attribute__ ((fallthrough))
switch (condition) {
case 1:
printf("1 ");
__attribute__ ((fallthrough));
case 2:
printf("2 ");
__attribute__ ((fallthrough));
case 3:
printf("3\n");
break;
}
GCC fallghrough 魔術評論
如果你能幫助它,你不應該使用它,它很瘋狂,但很高興知道:
int main(int argc, char **argv) {
(void)argv;
switch (argc) {
case 0:
argc = 1;
// fall through
case 1:
argc = 2;
};
}
通過以下方式防止 GCC 7.4.0 上的警告:
gcc -Wall -Wextra main.c
man gcc
描述了如何根據以下值識別不同的注釋:
-Wimplicit-fallthrough=n
C++17 [[fallthrough]]
屬性
C++17 為此獲得了標准化語法: GCC 7、-Wimplicit-fallthrough 警告,以及清除它們的可移植方式?
您應該能夠使用GCC 診斷編譯指示為源文件或源文件的某些部分禁用該特定警告。 嘗試將其放在文件頂部:
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.