2012-08-16 7 views
9

Was ist die Verwendung von "#pragma section <XYZ>" in C?Was ist die Verwendung von "#pragma Abschnitt <XYZ>" in C?

Ich habe über C-Code-Datei kommen, wo die folgende Art verwendet: -

#define XYZ "ITEM 26.G03" 

#pragma section <XYZ> 

wobei XYZ: #define XYZ "ITEM 26.G03"

ich über die Verwendung von "#pragma section"

+0

http://stackoverflow.com/questions/9716637/what-is-the-use-of-pragma-code-section-and-data-section – codejammer

+0

Sie können Antwort annehmen, wenn es Ihnen hilft. Auch die zukünftigen Besucher werden davon profitieren. – Jaguar

Antwort

4

Abschnitt einige explaination müssen erstellt ein Abschnitt in einer OBJ-Datei.
Weitere Informationen finden Sie unter MSDN.

Code und Daten werden in Abschnitten in einer Objektdatei generiert, vom Linker zu einer ausführbaren Datei kombiniert und schließlich im Zielspeicher an bestimmten Speicherorten gespeichert. Standardabschnitte sind vordefiniert und haben bestimmte Attribute. Die Abschnitt Pragmas können verwendet werden, um die Standardattribute zu ändern, neue Abschnitte zu definieren und die Zuordnung von Code und Variablen zu bestimmten Abschnitten und, zusammen mit der Linker-Befehlsdatei, ihre Standorte zu steuern.

#pragma section definiert eine Abschnittsklasse und optional einen oder zwei Abschnitte in der Klasse. Eine Abschnittsklasse steuert die Adressierung und Zugänglichkeit von Variablen und Code, die in einer Instanz der Klasse platziert sind.

7

Die Direktive #pragma ist eine implementierungsspezifische Direktive, es ist eine Standardmethode, um dem Compiler zusätzliche Informationen zur Verfügung zu stellen. Diese Anweisung hat die folgende Form:

#pragma name 

Wenn der Präprozessor die angegebene „name“ erkennt, führt sie jede Maßnahme sie stehen, oder übergibt Informationen an den Compiler. Wenn "name" von der c-Implementierung nicht unterstützt wird, wird sie ignoriert.

Zum Beispiel GCC-Compiler akzeptieren Sie die Liste der aufgeführten Pragmas here.

Für die #pragma section, die Dokumentation der gcc gesagt:

Abschnitt ("section-name") Normalerweise wird der Compiler den Code legt es im Textteil erzeugt. Manchmal benötigen Sie jedoch zusätzliche Abschnitte , oder Sie benötigen bestimmte Funktionen, die in speziellen Abschnitten erscheinen. Das Attribut section gibt an, dass eine Funktion in einem bestimmten Abschnitt lebt. Zum Beispiel ist die Erklärung:

 extern void foobar (void) __attribute__ ((section ("bar"))); 

setzt die Funktion foobar in der Bar Abschnitt.

Einige Dateiformate unterstützen keine beliebigen Abschnitte, daher ist das Attribut nicht auf allen Plattformen verfügbar. Wenn Sie den gesamten Inhalt eines Moduls einem bestimmten Abschnitt zuordnen müssen, sollten Sie stattdessen die Funktionen des Linkers mit verwenden.

Mehr dazu here.