CPP32.EXE, le préprocesseur du compilateur C

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilitaires de ligne de commande - Index

CPP32.EXE produit un fichier Windows 32 bits qui liste un programme C ou C++, dans lequel tous les fichiers #include et toutes les macros #define ont été développés. Bien qu'il ne soit pas nécessaire d'utiliser le préprocesseur pour une compilation normale, ce fichier de listage peut être utile à des fins de débogage.

Souvent, lorsque le compilateur signale une erreur dans une macro ou un fichier d'inclusion, vous pouvez obtenir davantage d'informations sur la nature de l'erreur en consultant les fichiers d'inclusion ou les résultats du développement des macros. Avec un grand nombre de compilateurs à plusieurs passes, ce travail est effectué par une passe distincte dont on peut examiner les résultats. Puisque le compilateur C++Builder est un compilateur à une seule passe, utilisez CPP32 pour obtenir la fonctionnalité première passe trouvée.

Pour chaque fichier traité par CPP32, la sortie est écrite dans un fichier du répertoire en cours (ou du répertoire de sortie désigné à l'aide de l'option -n) portant le nom du fichier source mais avec l'extension .I.

Ce fichier de sortie est un fichier texte contenant chaque ligne du fichier source et tous les fichiers d'inclusion. Les lignes contenant des directives de prétraitement ont été retirées, de même que les lignes de texte conditionnel exclues de la compilation. Dans chaque ligne de texte, les macros sont remplacées par leur texte développé.

Par défaut, les lignes de texte générées sont préfixées par des commentaires contenant le nom de fichier et le numéro de ligne du fichier source ou d'inclusion dont elles proviennent. Utilisez l'option -Sr pour produire un fichier ne contenant pas ces commentaires. Vous pouvez alors passer ce fichier au compilateur (utilisez l'option -P du compilateur pour imposer une compilation C++).


Syntaxe de la ligne de commande

CPP32 [<options>] <filename[s]>


Eléments de la ligne de commande

Elément Description

<options>

Options de la ligne de commande. Elles sont facultatives.

<filename>

Définit un fichier à traiter. Il est possible de spécifier plusieurs fichiers. Au moins un fichier doit être spécifié.


Pour afficher l'aide courte de la ligne de commande, entrez :

cpp32 -h

ou

cpp32 -h -

pour afficher l'aide complète de la ligne de commande.

Options de la ligne de commande

CPP32 reconnaît les mêmes options que BCC32, et les options -Sx supplémentaires suivantes (contrôle du format de sortie du prétraitement) :

Option Description

-Sc

Conserve les commentaires dans le fichier prétraité.

-Sd

Conserve #define et #undef dans le fichier prétraité.

-Sk

Conserve le fichier de sortie en cas d'erreur.

-Sl

Génére la sortie de style #line.

-SI

Accepte la syntaxe spécifique à IDL.

-Sr

Rend la sortie lisible en préservant les commentaires et les indentations.

-Ss

Affiche les statistiques sur les noms de fichier et les compteurs de lignes.


CPP32 en tant que préprocesseur de macros

CPP32 peut être utilisé en tant que préprocesseur de macros. Le fichier .i résultant peut alors être compilé avec BCC32. Le programme simple suivant illustre le prétraitement d'un fichier par CPP32.

#define NAME "C++Builder"
#define BEGIN {
#define END } 

main() 
BEGIN

  printf("%s\n", NAME);

END

Fichier source : HELLOCPP.C

Exécutez :

CPP32 HELLOCPP.C

Entrez :

/* HELLOCPP.C 1: */
/* HELLOCPP.C 2: */
/* HELLOCPP.C 3: */
/* HELLOCPP.C 4: */
/* HELLOCPP.C 5: */main()
/* HELLOCPP.C 6: */{
/* HELLOCPP.C 7: */printf("%s\n", "C++Builder");
/* HELLOCPP.C 8: */}
/* HELLOCPP.C 9: */

Utilisation de MIDL avec CPP32

MIDL -cpp_cmd {CPP32} -cpp_opt "-Sr -oCON {CPP32 options}" {MIDL options} {.idl/.acf file}

MIDL (Microsoft Interface Definition Language, langage de définition d'interface Microsoft) est un compilateur RPC. Afin d'utiliser MIDL avec le préprocesseur C++ (CPP32.EXE), vous devez utiliser la commande MIDL suivante :

Option Description

-cpp_cmd {CPP32}

Indique à MIDL le préprocesseur à utiliser lors du traitement d'un fichier .IDL ou .ACF. MIDL appelle le préprocesseur pour développer les macros dans les fichiers source.

-cpp_opt "{options}"

Spécifie les options de ligne de commande pour le préprocesseur. L'option -Sr retire les commentaires contenant le numéro de ligne et le nom de fichier dans chaque ligne de la sortie prétraitée. L'option -oCON indique que la sortie prétraitée doit être acheminée vers la sortie standard, au lieu d'être enregistrée dans un fichier. La bannière du préprocesseur et le fichier en cours de traitement ne sont pas transmis. L'inclusion de -oCON dans un fichier .CFG traité par le préprocesseur provoque la transmission de la bannière.

{CPP32 options}

Passe les options à CPP32.

{MIDL options}

Toutes les options de ligne de commande MIDL.

{.idl/.acf file}

Le fichier source traité par MIDL.


BCC32, CPP32 et UUIDs

uuid(5630EAA0-CA48-1067-B320-00DD010662DB)

Dans certains cas, CPP32 n'accepte pas des UUIDs valides. Une instruction UUID valide est, par exemple, de la forme :

uuid("5630EAA0-CA48-1067-B320-00DD010662DB")

Quand CPP32 rencontre 5630EAA0, il le considère comme un nombre à virgule flottante, et comme il ne s'agit pas d'un nombre à virgule flottante valide, le préprocesseur émet une erreur. Pour contourner ce problème, encadrez l'UUID par des guillemets. Lors de l'utilisation de MIDL avec CPP32, utilisez l'option -ms_ext. L'instruction UUID devient :

MIDL -ms_ext CPP32 -cpp_opt "-Sr {CPP32 options}" {MIDL options} {.idl/.acf file}


Voir aussi