Funktion Pointer Deklaration - was macht __P?

7

Die übliche Form von Funktionszeigerdefinitionen ist:

%Vor%

Aber ich habe heute eine Form gesehen, die ich nicht verstanden habe. Kann mir das bitte jemand erklären?

%Vor%     
Cruisehu 20.04.2013, 16:18
quelle

3 Antworten

11

Das Makro __P() wird normalerweise verwendet, um C-Implementierungen ab den Tagen von K & amp; C zu unterstützen, wenn es keine Prototypen gab (die mit C89 in C eingeführt wurden). Grundsätzlich ist die Logik

%Vor%

Können Sie sehen, wie das funktioniert, wenn es auf Ihr Beispiel angewendet wird? Beachten Sie, dass die Argumentliste die Klammern des Funktionsaufrufs enthalten muss und nicht nur die Klammern von funktionsähnliches Makro . Daher die doppelten Klammern, wenn das Makro verwendet wird. Das ist wahrscheinlich der Grund, warum es ungewöhnlich aussieht.

    
Jens 20.04.2013, 16:28
quelle
9

__P() ist nur ein Makro. Auf meinem System ist es wie folgt definiert (in sys/cdefs.h ):

%Vor%

Daraus ergibt sich, dass es verwendet wird, um Kompatibilität mit (sehr) alten Compilern aufrechtzuerhalten.

    
NPE 20.04.2013 16:26
quelle
2
  

Die übliche Form der Funktionszeigerdefinitionen ist .... aber ich habe a gesehen   Form heute, die ich nicht verstanden habe.

Hier gibt es nichts Spezielles, keine magische Syntax. Dies ist nicht eine andere Form der Funktionszeigerdeklaration.

Dies ist nur die Standardform der Funktionszeigerdeklaration, und __P() ist ein Makro, das von einer der Headerdateien definiert wird, die Sie verwenden. So, finden Sie diese Makrodefinition, um zu erfahren, was ihr Zweck ist.

    
David Heffernan 20.04.2013 16:24
quelle