likely
ist nicht Teil der C-Sprache. Es muss irgendwie durch den Kontext des Codes definiert werden, in dem Sie das gesehen haben. (Es ist wahrscheinlich ein Makro, das zu einem Compiler-spezifischen Konstrukt erweitert, dass der Compiler sagt a >= b
ist wahrscheinlich um wahr zu sein, die Optimierung helfen kann. Aber aus dem Code, den Sie zeigten, wissen wir das nicht sicher.
)
Unter der Annahme, dass likely
ist in der Tat so ein Makro, wir können es auf Ihre eigentliche Frage entfernen und fortfahren:
if (a >= b)
return 1;
ist nicht die gleiche wie
return a >= b;
weil sie verschiedene Dinge tun, wenn a kleiner als b ist. return a >= b;
gibt 0 zurück, wenn a kleiner als b ist, aber if (a >= b) return 1;
geht weiter zu dem, was unterhalb der if-Anweisung liegt, wenn a kleiner als b ist.
Zwei Konstrukte, die sind äquivalent zu return a >= b;
sind
if (a >= b)
return 1;
else
return 0;
und
if (a >= b)
return 1;
return 0;
Die meisten erfahrenen C-Programmierer eher return a >= b;
als entweder sehen würde.
[Zusatz: return likely(a >= b);
ist eine merkwürdige Sache zu schreiben, weil die Funktion in beide Richtungen zurückkehrt, und der Code, der den Rückgabewert einrichtet, ist kurz, einfach und (oft) zweigfrei. Es könnte denkbar sein, einen Hinweis auf interprocedural optimization bereitzustellen, aber es wäre natürlicher, diese Art von Hinweis als eine Anmerkung zu dem Funktionsprototyp auszudrücken, z.
extern int fstat(int fd, struct stat *st)
__attribute__((expected_return_value(0)));
(Anmerkung:. Keine echte GCC Funktion Anmerkung soweit ich weiß)]
Was ist "wahrscheinlich" –
für eine Definition von 'wahrscheinlich', siehe http://StackOverflow.com/Questions/109710/likely-unlikely-Macros-in-the-linux-kernel-how-do-they- Arbeit-was-was-ihre – DaBler
Sehr wahrscheinlich das Gleiche. Aber Sie müssen den zurückgegebenen Wert als boolesch behandeln. –