Traductions de cette page?:

#pragma

    #pragma lexems

La commande #pragma permet au programmeur d'indiquer au compilateur d'exécuter certaines actions. La commande #pragma dépend de l'implémentation qui en est faite sur chaque compilateur, son utilisation diffère d'un compilateur à l'autre. une possibilité de cette commande peut être de tracer l'exécution du programme.

#pragma peut aussi être utilisé pour appeler une fonction avant l'exécution du main ou à sa sortie.

#pragma startup foo() // La fonction ne doit pas avoir de type de retour ni de paramètres
#pragma exit bar()

Ci-dessous, une liste des familles de compilateurs et des OS sur lesquels ceux-ci sont disponibles, présente les spécificités propres à l'implémentation de #pragma sur ces compilateurs.

GNU C Compiler (GCC) - GNU/Linux, BSD, GNU/Hurd, GNU/Darwin/Mac OS X, Windows (MinGW)

redefine_extname

    #pragma redefine_extname printf prnt

Fournit au fonctions C un alias définit par le programmeur lorsque que le compilateur traduit le code en assembleur.

extern_prefix

    #pragma extern_prefix ext_ // démarrage du pré-fixage
    // insérez ici vos préfixes
    #pragma extern_prefix // fin du préfixage

Préfixe toutes les noms des fonctions assembleur avec une chaîne de caractères. Une autre utilisation de #pragma extern_prefix stoppera le pré-fixage de des fonctions.

pack

    #pragma pack(64) // optimise toutes les classes, unions et structures à la suite de cette ligne pour du code 64 bits

Cette méthode d'optimisation “aligne” les membres des structures, classes et unions à un facteur de la taille du “paquet” de données. Cela simplifie (et donc accélère) l'accès données par le processeur puisque les données sont “alignée” sur le début des structures de données que le processeur utilise. Cependant, ce procédé a un coût mémoire plus élevé que la normale qui est causé par l'ajout de données aléatoires et inutiles pour permettre l'alignement des “paquets” de données.

La valeur numérique entre parenthèses doit être une puissance de 2 (2, 4, 8, 16, 32, 64…).

Il y a d'autres utilisations possibles d'utilise la commande #pragma pack qui sont décrits ci-dessous (bien que la méthode précédente soit la plus commune et la plus facile) :

#pragma pack() /* avec des parenthèses vides */

Ceci réinitialisera la valeur de “packing”.

Article issu de la traduction de l'article anglais qui n'est pas terminé