Freigeben über


Bindungsangaben

Der Begriff „Binding“ bezieht sich auf das heißt sie das Protokoll zum Verknüpfen von den Funktionen (oder Prozeduren), die in verschiedenen Sprachen geschrieben sind.Die folgenden Aufrufkonventionen sind betroffen:

  • Berücksichtigung der Groß-und Kleinschreibung von Namen.

  • Ergänzung von Namen.In C Präfix der Compiler die Namen mit einem Unterstrich.Dies wird häufig als „Dekoration.“ In C++ ist die Namenszerlegung verwendet, um Typinformationen von der Bindung von phase beizubehalten.(Siehe Ergänzte Namen)

  • Reihenfolge der Argumente im Stapel erwartet werden.

  • Aufgaben zum Anpassen des Stapels auf Funktionsrückgabe.Entweder die aufgerufene Funktion oder die aufrufende Funktion verantwortlich ist.

  • Die ausgeblendeten Argumenten übergeben (ob ausgeblendete Argumente übergeben werden.)

extern string-literal { declaration-list }
extern string-literal declaration

Spezifikation für die Datenbindung zu C-Code, erleichtert. C++ graduell zu portieren, indem sie die Verwendung existierendem Code zulässt.

Microsoft-spezifisch

Die einzigen Bindung, die derzeit von Microsoft C++ unterstützt werden, sind „C“ und „C++“.

BEENDEN Sie Microsoft-Besonderen

Das folgende Beispiel deklariert die Funktionen atoi und atol mit C-Bindung:

extern "C"
{
    int  atoi( char *string );
    long atol( char *string );
}

Aufrufe werden diese Funktionen mit C-Bindung gemacht.Das gleiche Ergebnis könnte mit diesen beiden Deklarationen werden:

extern "C" int  atoi( char *string );
extern "C" long atol( char *string );

Microsoft-spezifisch

Alle Microsoft C-Standard includedateien verwenden, um Direktiven für die bedingte Kompilierung C++-Kompilierung zu erkennen.Wenn die Kompilierung in C-Format C++-Compiler erkannt wird, werden die Prototypen in extern "C"-Direktive enthalten:

// Sample.h
#if defined(__cplusplus)
extern "C"
{
#endif

// Function declarations

#if defined(__cplusplus)
}
#endif 

Microsoft ENDES bestimmten

Sie müssen keine Funktionen in den includedateien als **extern "C"**zu deklarieren.

Wenn eine Funktion überladen ist, kann nicht mehr als eine der Funktionen des gleichen Namens eines Bindungsspezifizierer wurde.(Weitere Informationen finden Sie unter Funktionsüberladung).

Die folgende Tabelle zeigt, wie verschiedene Binden von spezifikationen arbeiten.

Auswirkungen von Bindungs-Spezifikationen

Spezifikation

Effect

Auf einem Objekt

Beeinflusst Bindung nur dieses Objekts

Auf einer Funktion

Beeinflusst Bindung dieser Funktion und die Objekte, Funktionen oder aller in der sie deklariert werden

Auf einer Klasse

Beeinflusst Bindung Nichtmitglieds aller Funktionen und Objekte, die innerhalb der Klasse deklariert werden

Wenn eine Funktion mehr als eine Spezifikation für die Datenbindung aufweist, müssen sie Agree. Es ist ein Fehler, um Funktionen und C#, als seien ihre C++-Bindung deklarieren.Darüber hinaus wenn zwei Deklarationen für eine Funktion in einem Programm auftreten:eine mit einer Bindung eines außen — Spezifikation und der Deklaration mit der Spezifikation für die Datenbindung muss erste sein.Alle redundanten Deklarationen von Funktionen, die bereits Spezifikation für die Datenbindung haben, sind die Bindung angegeben, die in der ersten Deklaration angegeben wird.Beispiele:

extern "C" int CFunc1();
...
int CFunc1();            // Redeclaration is benign; C linkage is
                         //  retained.

int CFunc2();
...
extern "C" int CFunc2(); // Error: not the first declaration of
                         //  CFunc2;  cannot contain linkage
                         //  specifier.

Funktionen und Objekte explizit deklariert, während static innerhalb des Texts eines zusammengesetzten bindungs spezifizierers () als statische Funktionen oder Objekte behandelt werden. der Bindungsspezifizierer wird ignoriert.Andere Funktionen und Objekte verhalten sich so, als wäre die Verwendung des extern-Schlüsselworts deklariert.(Weitere Informationen finden Sie ausführliche Informationen zum Verwenden von extern, um die Bindung anzugebenextern ) - Schlüsselwort.

Siehe auch

Referenz

Verwenden von extern, um die Bindung angeben