__declspec

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Schlüsselwörter alphabetisch - Index

Kategorie

Modifizierer, Schlüsselwort-Erweiterungen, Speicherklassenspezifizierer

Syntax

__declspec(<decl-modifier>)

Beschreibung

Mit dem Schlüsselwort __declspec werden die für eine Variable oder Funktion geeigneten Speicherklassenattribute angegeben.

Das Schlüsselwort __declspec erweitert die Attributsyntax für Speicherklassenmodifizierer, um deren flexiblere Platzierung in Deklarationsanweisungen zu erzielen. __declspec und seine Argumente können an beliebiger Stelle in der Deklaratorenliste erscheinen, im Gegensatz zu den Modifizierern alten Typs, die jeweils unmittelbar vor den zu modifizierenden Bezeichnern angegeben werden mussten.

 __export void f(void);                      // illegal
 void __export f(void)                       // correct
 void __declspec(dllexport) f(void);         // correct
 __declspec(dllexport)void f(void);          // correct
 class __declspec(dllexport) ClassName { }   // correct

Modifizierer

Direktive Beschreibung Alternative
__declspec(allocate("SEGNAME")) Gibt das Segment an, in dem die Entität zugewiesen ist. #pragma codeseg
__declspec(delphiclass) Gibt an, dass diese Klasse von TObject abgeleitet ist und mit Object Pascal und der VCL kompatibel sein muss.
__declspec(delphirecord) Gibt an, dass diese Struktur ein Object Pascal-Record ist (im C++-Code automatisch aus Object Pascal-Code generiert).
__declspec(delphireturn) Gibt an, dass dieser Typ mit der VCL kompatibel sein muss, so dass er per Wert in Funktionsaufrufen übergeben werden kann.
__declspec(delphirtti) Gibt an, dass für die public- oder published-Member dieser Klasse Object Pascal RTTI generiert werden muss.
__declspec(dllexport) Gibt an, dass diese Entität beim Erzeugen einer gemeinsamen Bibliothek importiert werden muss. _export, __export
__declspec(dllimport) Gibt an, dass diese Entität beim Erzeugen einer gemeinsamen Bibliothek exportiert werden muss. _import, __import
__declspec(dynamic) Gibt an, dass diese Funktion dynamisch ist (ähnlich wie virtual).
__declspec(naked) Gibt an, dass diese Funktion keinen Prolog- und Epilog-Code haben darf.
__declspec(hidesbase) Gibt an, dass diese Member-Funktion keine Beziehung zu virtuellen Funktionen mit demselben Namen in den Basisklassen hat.
__declspec(noreturn) Gibt an, dass diese Funktion nicht zurückkehrt. #pragma noretval, C++0x-Attribut noreturn
__declspec(nothrow) Gibt an, dass diese Funktion keine Exception auslöst.
__declspec(novtable) Gibt an, dass der Code zur Initialisierung der V-Tabelle der Klasse nicht erzeugt werden soll.
__declspec(package) Gibt an, dass diese Klassendefinition in ein Package compiliert werden kann.
__declspec(pascalimplementation) Gibt an, dass diese Klasse in Object Pascal definiert ist.
__declspec(property) Definiert eine Eigenschaft mit dem gegebenen Lese- und/oder Schreibzugriff. __property
__declspec(selectany) Gibt an, dass diese globalen Daten in mehr als einer Quelldatei initialisiert sind und dass für die Definition ein beliebiger Initialisierungscode ausgewählt werden kann.
__declspec(thread) Gibt an, dass diese Entität für den Thread lokal ist (thread-lokaler Speicher). __thread
__declspec(uuid("ComObjectGUID")) Ordnet einer Klasse einen global eindeutigen Bezeichner (GUID) zu.

Siehe auch