Partager via


/D (Définitions de préprocesseur)

Définit un symbole de prétraitement pour un fichier source.

Syntaxe

/D[ ]name[=# | [{ numéro de chaîne | }] ]
/D[ ]"name[=# | [{ numéro de chaîne | }] ]"

Notes

Vous pouvez utiliser ce symbole avec #if ou #ifdef pour effectuer une compilation conditionnelle du code source. La définition de symbole reste en vigueur jusqu’à ce qu’elle soit redéfinie dans le code, ou qu’elle n’est pas définie dans le code par une #undef directive.

/D a le même effet qu’une #define directive au début d’un fichier de code source. La différence est que /D les guillemets sont entre guillemets sur la ligne de commande et qu’une #define directive les conserve. Vous pouvez avoir des espaces blancs entre le /D symbole et le symbole. Il ne peut pas y avoir d’espace entre le symbole et le signe égal, ou entre le signe égal et toute valeur affectée.

Par défaut, la valeur associée à un symbole est 1. Par exemple, /D name équivaut à /D name=1. Dans l’exemple à la fin de cet article, la définition est TEST affichée pour imprimer 1.

La compilation à l’aide de l’utilisation /D name= entraîne l’absence de valeur associée au nom du symbole. Bien que le symbole puisse toujours être utilisé pour effectuer une compilation de code conditionnelle, il ne retourne rien. Dans l’exemple, si vous compilez à l’aide /DTEST=, une erreur se produit. Ce comportement ressemble à l'utilisation de #define avec ou sans valeur.

L’option /D ne prend pas en charge les définitions de macro de type fonction. Pour insérer des définitions qui ne peuvent pas être définies sur la ligne de commande, envisagez l’option /FI du compilateur (Nom forcé fichier include).

Vous pouvez utiliser /D plusieurs fois sur la ligne de commande pour définir davantage de symboles. Si le même symbole est défini plusieurs fois, la dernière définition est utilisée.

Cette commande définit le symbole DEBUG dans TEST.c:

CL /DDEBUG TEST.C

Cette commande supprime toutes les occurrences du mot clé __far dans TEST.c :

CL /D __far= TEST.C

La variable d’environnement CL ne peut pas être définie sur une chaîne qui contient le signe égal. Pour utiliser /D conjointement avec la CL variable d’environnement, vous devez spécifier le signe numérique (#) au lieu du signe égal :

SET CL=/DTEST#0

Lorsque vous définissez un symbole de prétraitement à l'invite de commandes, tenez compte des règles d'analyse du compilateur et des règles d'analyse du shell. Par exemple, pour définir un symbole de prétraitement de signe de pourcentage (%) dans votre programme, spécifiez deux caractères de signe de pourcentage (%%) à l’invite de commandes. Si vous spécifiez une seule erreur d’analyse, une erreur d’analyse est émise.

CL /DTEST=%% TEST.C

Pour définir cette option du compilateur dans l'environnement de développement Visual Studio

  1. Ouvrez la boîte de dialogue Pages de propriétés du projet. Pour plus d’informations, consultez Définir le compilateur C++ et les propriétés de build dans Visual Studio.

  2. Sélectionnez la page de propriétés de configuration>C/C++>Préprocesseur.

  3. Ouvrez le menu déroulant de la propriété Définitions de préprocesseur et choisissez Modifier.

  4. Dans la boîte de dialogue Définitions de préprocesseur, ajoutez, modifiez ou supprimez une ou plusieurs définitions, une par ligne. Sélectionnez OK pour enregistrer vos modifications.

    Vous n’avez pas besoin d’inclure le préfixe d’option « /D » sur les définitions que vous spécifiez ici. Dans la page de propriétés, les définitions sont séparées par des points-virgules (;).

Pour définir cette option du compilateur par programmation

Exemple

// cpp_D_compiler_option.cpp
// compile with: cl /EHsc /DTEST cpp_D_compiler_option.cpp
#include <stdio.h>

int main( )
{
#ifdef TEST
    printf_s("TEST defined %d\n", TEST);
#else
    printf_s("TEST not defined\n");
#endif
}
TEST defined 1

Voir aussi

Options du compilateur MSVC
Syntaxe de ligne de commande du compilateur MSVC
/FI (Nom forcé fichier include)
/U, /u (Symboles indéfinis)
#undef Directive (C/C++)
#define Directive (C/C++)