2010-08-18 3 views
8

En langage assembleur, il est facile de définir une section comme:définir une section de programme en code C (GCC)

.section foo 

Comment cela peut-il être fait dans le code C? Je veux mettre un morceau de code C dans une section spéciale plutôt que .text, donc je serai en mesure de mettre cette section dans un endroit spécial dans le script de l'éditeur de liens.

J'utilise GCC.

+1

Je suis sûr que cela va être compilateur spécifique - vous pouvez peut-être nous dire que celui que vous utilisez ... –

+2

oeil à Pragma pour votre compilateur – pmod

Répondre

15

La norme C ne dit rien sur les « sections » dans le sens que vous voulez dire, vous aurez donc besoin d'utiliser des extensions spécifiques à votre compilateur.

Avec GCC, vous voudrez utiliser l'attribut section:

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

Il y a une documentation limitée here, y compris un avertissement:

Certains formats de fichiers ne prennent pas en charge sections arbitraires de façon l'attribut section n'est pas disponible sur toutes les plates-formes . Si vous devez mapper le contenu entier d'un module à une section particulière , utilisez plutôt les fonctionnalités de l'éditeur de liens.

+0

merci hommes/femmes. extern void foobar (vide) __attribute __ ((section ("bar"))); travaille pour moi. – richard