Das Makro __P()
wird normalerweise verwendet, um C-Implementierungen aus den Tagen K & R C zu unterstützen, wenn es keine Prototypen gab (die mit C89 in C eingeführt wurden). Grundsätzlich ist die Logik
#if SOME_LOGIC_TO_TEST_WHETHER_IMPLEMENTATION_SUPPORTS_PROTOTYPES
# define __P(argument_list) argument_list
#else
# define __P(argument_list)()
#endif
Können Sie sehen, wie dies funktioniert, wenn auf Ihr Beispiel angewendet? Beachten Sie, dass für diese zu arbeiten und nicht einen Syntaxfehler verursachen, die Argumentliste die Klammern der Funktionsaufruf, nicht nur die Klammern der funktionsähnliche Makro enthalten muss. Daher die doppelten Klammern, wenn das Makro verwendet wird. Das ist wahrscheinlich der Grund, warum es ungewöhnlich aussieht.
Ist das C oder C++? (Fügen Sie das Tag bitte zur Frage hinzu). Weißt du, was das '__P'-Makro ist? – Rup
C, ich habe Tag hinzugefügt. Ich weiß nicht, _P ist Makro. Unser Lehrer bittet uns, die Quelldatei in berkeleyDB zu lernen, aber ich bin nicht gut in C. – Cruisehu
@Maybe Sie sollten eine Antwort akzeptieren –