/D (Definiciones de preprocesador)

Define un símbolo de preprocesamiento para un archivo de código fuente.

Sintaxis

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

Comentarios

Puede usar este símbolo junto con #if o #ifdef para compilar condicionalmente archivos de código fuente. La definición del símbolo se mantiene vigente hasta que se redefine en el código o está sin definir mediante la directiva #undef.

/D tiene el mismo efecto que una directiva #define al principio de un archivo de código fuente. La diferencia es que /D quita las comillas en la línea de comandos y una directiva #define las mantiene. Puede tener espacios en blanco entre /D y el símbolo. No puede haber espacios en blanco entre el símbolo y el signo igual, o entre el signo igual y cualquier valor asignado.

De forma predeterminada, el valor asociado a un símbolo es 1. Por ejemplo, /D name es equivalente a /D name=1. En el ejemplo que encontrará al final de este artículo, la definición de TEST se muestra para imprimir 1.

Cuando la compilación se realiza con /D name= el nombre del símbolo no tiene un valor asociado. Aunque el símbolo aún se pueda utilizar para compilar código condicionalmente, no se evalúa como ningún valor. En el ejemplo, si realiza la compilación con /DTEST=, se produce un error. Este comportamiento es similar al uso de #define con o sin un valor.

La opción /D no admite las definiciones de macros similares a las funciones. Para insertar las definiciones que no se pueden definir en la línea de comandos, considere la opción del compilador /FI (Dar nombre al archivo de inclusión obligatorio).

Puede usar varias veces /D en la línea de comandos para definir más símbolos. Si se define el mismo símbolo más de una vez, se usa la última definición.

Este comando define el símbolo DEBUG en TEST.c:

CL /DDEBUG TEST.C

Este comando quita todas las apariciones de la palabra clave __far en TEST.c:

CL /D __far= TEST.C

La variable de entorno CL no se puede definir en una cadena que contiene el signo igual. Para usar /D con la variable de entorno CL, debe especificar el signo de número (#) en lugar del signo igual:

SET CL=/DTEST#0

Al definir un símbolo de preprocesamiento en el símbolo del sistema, tenga en cuenta las reglas de análisis del shell y del compilador. Por ejemplo, para definir un símbolo de preprocesamiento de signo de porcentaje (%) en el programa, especifique dos caracteres de signo de porcentaje (%%) en el símbolo del sistema. Si especifica solo uno, se emite un error de análisis.

CL /DTEST=%% TEST.C

Para establecer esta opción del compilador en el entorno de desarrollo de Visual Studio

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para más información, vea Establecimiento del compilador de C++ y de propiedades de compilación en Visual Studio.

  2. Seleccione la página de propiedades Propiedades de configuración>C/C++>Archivos de salida.

  3. Abra el menú desplegable de la propiedad Definiciones de preprocesador y elija Editar.

  4. En el cuadro de diálogo Definiciones de preprocesador, agregue, modifique o elimine una o varias definiciones, una por línea. Elija Aceptar para guardar los cambios.

    No es necesario incluir el prefijo de opción '/D' en las definiciones que especifique aquí. En la página de propiedades, las definiciones se separan por punto y coma (;).

Para establecer esta opción del compilador mediante programación

Ejemplo

// 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

Consulte también

Opciones del compilador de MSVC
Sintaxis de línea de comandos del compilador de MSVC
/FI (Dar nombre al archivo de inclusión obligatorio)
/U, /u (Anular la definición de símbolos)
#undef Directiva (C/C++)
#define Directiva (C/C++)