2010-08-18 5 views
8

In Assembler-Sprache, es ist leicht, einen Abschnitt wie zu definieren:definieren einen Programmteil in C-Code (GCC)

.section foo 

Wie dies in C-Code zu tun? Ich möchte ein Stück C-Code in einen speziellen Abschnitt einfügen, anstatt .text, damit ich diesen Abschnitt an einer bestimmten Stelle im Linker-Skript platzieren kann.

Ich benutze GCC.

+1

Ich bin mir ziemlich sicher, dass dieser Compiler spezifisch sein wird - vielleicht können Sie uns sagen, welche Sie verwenden ... –

+2

Blick auf Pragma die für Ihren Compiler – pmod

Antwort

15

Der C-Standard sagt nichts über "Abschnitte" in dem Sinne, dass Sie meinen, also müssen Sie für Ihren Compiler spezifische Erweiterungen verwenden.

Mit GCC, werden Sie die section Attribut verwenden:

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

Es gibt einige begrenzte Dokumentation here, darunter eine Warnung:

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

+0

dank Männer/Frauen. extern void foobar (void) __attribut __ ((Abschnitt ("bar"))); funktioniert bei mir. – richard

Verwandte Themen