/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
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.
Selecione a página de propriedades Propriedades da Configuração>C/C++>Pré-processador.
Abra o menu suspenso da propriedade Definições do Pré-processador e escolha Editar.
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
- Consulte PreprocessorDefinitions.
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 da 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++)