fangen Wie der Titel schon sagt, für diejenigen, die bereits beginnen wissen mit GCC-6
Sie ein Duplikat in einer if
Anweisung dieses Flag -Wduplicated-cond
wie diese fangen:Wie ein Duplikat wie `-Wduplicated-cond` von GCC-6
#include <stdio.h>
int main(void){
int a = 5;
if(a == 5){
printf("First condition is True, A = %d\n", a);
}else if(a == 5){
printf("Second condition is True, A = %d\n", a);
}
}
und der Ausgang wird sein:
program.c:8:17: warning: duplicated ‘if’ condition [-Wduplicated-cond]
}else if(a == 5){
~~^~~~
program.c:6:11: note: previously used here
if(a == 5){
~~^~~~
Jetzt weiß ich, dass der folgende:
else if((a > 4) && (a < 6))
ist nicht das gleiche wie
else if(a == 5)
aber es kommt vor, dass ich einen Scheck für den gleichen Zustand, wenn a == 5
tun.
Meine Frage ist, gibt es irgendwelche Chancen, diese Art von Duplikat zu fangen (zu vermeiden)?
Ich bezweifle, dass es gefangen wird ... die Analyse ist zu komplex für so eine kleine Sache. –
Ich denke, dass 'if (a == 5)' und 'else if (a == 5)' die gleichen Anweisungen erzeugt und 'else if ((a> 4) && (a <6)) 'erzeugt einen anderen Befehl [ s], was wahrscheinlich bedeutet, dass der Compiler prüft, ob die gleichen Anweisungen stattfinden und nicht, wenn die Bedingungen dasselbe Ergebnis annehmen (erzeugen). Ich bin mir nicht sicher, ob ich recht habe. – Michi
Michi, öffne deine Augen gut während du codierst. –