/D (definições de pré-processador)

Define um símbolo de pré-processamento para um arquivo de código-fonte.

Sintaxe

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

Comentários

Você pode usar esse símbolo junto com #if ou #ifdef para compilar o código-fonte condicionalmente. A definição de símbolo permanece em vigor até que seja redefinida no código ou indefinida no código por uma diretiva #undef.

/D tem o mesmo efeito que uma diretiva #define no início de um arquivo de código-fonte. A diferença é que /D tira as aspas na linha de comando e a diretiva #define as mantém. Você pode ter espaço em branco entre a /D e o símbolo. Não pode haver espaço em branco entre o símbolo e o sinal de igual ou entre o sinal de igual e qualquer valor atribuído.

Por padrão, o valor associado a um símbolo é 1. Por exemplo, /D name é equivalente a /D name=1. No exemplo no final deste artigo, a definição de TEST é mostrada para imprimir 1.

Compilar usando /D name= faz com que o símbolo name não tenha nenhum valor associado. Embora o símbolo ainda possa ser usado para compilar o código condicionalmente, em outros casos, sua avaliação não resulta em nada. No exemplo, se você compilar usando /DTEST=, ocorrerá um erro. Esse comportamento é semelhante ao uso de #define com ou sem um valor.

A opção /D não dá suporte a definições de macro semelhantes a funções. Para inserir definições que não possam ser definidas na linha de comando, considere a opção do compilador /FI (Inclusão de arquivo forçada pelo nome).

Você pode usar /D várias vezes na linha de comando para definir mais símbolos. Se o mesmo símbolo for definido mais de uma vez, a última definição será usada.

Este comando define o símbolo DEBUG em TEST.c:

CL /DDEBUG TEST.C

Esse comando remove todas as ocorrências da palavra-chave __far em TEST.c:

CL /D __far= TEST.C

A variável de ambiente CL não pode ser definida como uma cadeia de caracteres que contenha o sinal de igual. Para usar /D junto com a variável de ambiente CL, você deve especificar o sinal de número (#) em vez do sinal de igualdade:

SET CL=/DTEST#0

Quando você definir um símbolo de pré-processamento no prompt de comando, considere as regras de análise do compilador e do shell. Por exemplo, para definir um símbolo de pré-processamento de sinal porcentagem (%) em seu programa, especifique dois caracteres de sinal de porcentagem (%%) no prompt de comando. Se você especificar apenas um, será emitido um erro de análise.

CL /DTEST=%% TEST.C

Para definir esta opção do compilador no ambiente de desenvolvimento do Visual Studio

  1. Abra a caixa de diálogo Páginas de Propriedades do projeto. Para obter mais informações, confira Definir as propriedades de build e do compilador do C++ no Visual Studio.

  2. Selecione a página de propriedades Propriedades da Configuração>C/C++>Pré-processador.

  3. Abra o menu suspenso da propriedade Definições do Pré-processador e escolha Editar.

  4. Na caixa de diálogo Definições do Pré-processador, adicione, modifique ou exclua uma ou mais definições, uma por linha. Escolha OK para salvar suas alterações.

    Você não precisa incluir o prefixo de opção "/D" nas definições especificadas aqui. Na página de propriedades, as definições são separadas por ponto-e-vírgula (;).

Para definir essa opção do compilador via programação

Exemplo

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

Confira também

Opções do compilador MSVC
Sintaxe de linha de comando do compilador MSVC
/FI (Inclusão de arquivo forçada pelo nome)
/U, /u (Indefinir símbolos)
Diretiva #undef (C/C++)
Diretiva #define (C/C++)