/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
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.
Sélectionnez la page de propriétés de configuration>C/C++>Préprocesseur.
Ouvrez le menu déroulant de la propriété Définitions de préprocesseur et choisissez Modifier.
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
- Consultez PreprocessorDefinitions.
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++)