Les nouvelles versions de gcc offrent le Wimplicit-fallthrough
, ce qui est formidable pour la plupart des instructions switch. Cependant, j'ai une instruction switch où je veux autoriser les retombées de toutes les instructions case.
Existe-t-il un moyen de faire une chute explicite? Je préfère éviter d'avoir à compiler avec Wno-implicit-fallthrough
pour ce fichier.
EDIT: Je cherche un moyen de rendre la chute explicite (si c'est possible), de ne pas désactiver l'avertissement via un commutateur de compilateur ou un pragma.
Utilisez __attribute__ ((fallthrough))
switch (condition) {
case 1: __attribute__ ((fallthrough));
case 2: __attribute__ ((fallthrough));
case 3:
printf("1..3\n");
break;
}
Commentaires magiques de chute du GCC
Vous ne devriez pas l'utiliser, c'est fou, mais bon à savoir:
int main(int argc, char **argv) {
(void)argv;
switch (argc) {
case 0:
argc = 1;
// fall through
case 1:
argc = 2;
};
}
empêche l'avertissement sur GCC 7.4.0 avec:
gcc -Wall -Wextra main.c
man gcc
décrit comment différents commentaires peuvent ou non être reconnus en fonction de la valeur de:
-Wimplicit-fallthrough=n
C++ 17 [[fallthrough]]
attribut
C++ 17 a une syntaxe standardisée pour cela: GCC 7, -Avertissements de repli wimplicite, et moyen portable pour les effacer?
Vous devriez pouvoir utiliser pragmas de diagnostic GCC pour désactiver cet avertissement particulier pour votre fichier source ou une partie d'un fichier source. Essayez de mettre ceci en haut de votre fichier:
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"