/D (Définitions de préprocesseur)

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

Syntax

/D[ ]name[= | # [{ string | number }] ]
/D[ ]"name[= | # [{ string | number }] ]"

Remarques

Vous pouvez utiliser ce symbole avec #if ou #ifdef pour effectuer une compilation conditionnelle du code source. La définition du symbole reste en vigueur jusqu’à ce qu’elle soit redéfinie dans le code ou 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 rayées sur la ligne de commande et qu’une #define directive les conserve. Vous pouvez avoir un espace blanc entre le /D symbole et . Il ne peut pas y avoir d’espace blanc entre le symbole et le signe égal, ni 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 de TEST est affichée pour imprimer 1.

La compilation à l’aide /D name= de fait que le nom du symbole n’a aucune valeur associée. 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=de , 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 macros 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 du fichier include forcé).

Vous pouvez utiliser /D plusieurs fois sur la ligne de commande pour définir d’autres 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 avec la variable d’environnement CL , 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 pour cent (%%) à l’invite de commandes. Si vous n’en spécifiez qu’une seule, 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 depréprocesseurC/C++>Propriétés > de configuration.

  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 du préprocesseur , ajoutez, modifiez ou supprimez une ou plusieurs définitions, une par ligne. Choisissez 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 la ligne de commande du compilateur MSVC
/FI (Nom du fichier include forcé)
/U, /u (Symboles non par défaut)
#undef Directive (C/C++)
#define Directive (C/C++)