Compartilhar via


Macros (C/C++)

Pré-processamento expande a macros em todas as linhas que não são diretivas de pré-processamento (linhas que não possuem um # como o primeiro caractere que não seja espaço em branco) e em partes de algumas diretivas que não são ignoradas como parte de uma compilação condicional. "Diretivas de compilação condicional"permitem que você suprimir a compilação de partes de um arquivo de origem testando uma expressão constante ou identificador para determinar quais blocos de texto são passados para o compilador e quais blocos de texto são removidos do arquivo de origem durante o pré-processamento.

O #define diretiva é normalmente usada para associar identificadores significativos constantes, palavras-chave e instruções usadas com freqüência ou expressões.Os identificadores que representam as constantes são chamados "constantes simbólicas" ou "manifesto constantes". Os identificadores que representam instruções ou expressões são chamados de "macros". Nesta documentação pré-processador, somente o termo "macro" é usado.

Quando o nome da macro é reconhecido no texto de origem do programa ou em argumentos de alguns outros comandos de pré-processamento, ele é tratado como uma chamada de macro.O nome da macro é substituído por uma cópia do corpo da macro.Se a macro aceita argumentos, os argumentos reais, o nome da macro a seguir são substituídos por parâmetros formais no corpo da macro.O processo de substituição de uma chamada de macro com a cópia processada do corpo é chamado de "expansão" da chamada de macro.

Em termos práticos, há dois tipos de macros. "Semelhante ao objeto"macros adotarem nenhum argumento, ao passo que as macros do"tipo função"podem ser definidas para aceitar argumentos para que eles parecerá e agirá como chamadas de função.Porque as macros não geraram chamadas de função real, você pode às vezes tornar programas executados mais rapidamente, substituindo as chamadas de função com macros.(No C++, funções embutidas são freqüentemente um método preferencial). No entanto, as macros podem criar problemas se você não definir e usá-las com cuidado.Talvez você precise usar parênteses nas definições de macro com argumentos para preservar a precedência adequada em uma expressão.Além disso, as macros podem não manipula corretamente expressões com efeitos colaterais.Consulte o getrandom exemplo na A definir a diretiva de # para obter mais informações.

Depois de definir uma macro, você não é possível redefini-la com um valor diferente sem primeiro remover a definição original.No entanto, você poderá redefinir a macro com a mesma definição.Assim, a mesma definição pode aparecer mais de uma vez em um programa.

O #undef diretiva remove a definição de uma macro.Depois de remover a definição, você pode redefinir a macro para um valor diferente.A diretiva # define e A diretiva de #undef discutir a #define e #undef diretivas, respectivamente.

Para obter mais informações, consulte,

Consulte também

Outros recursos

Referência de pré-processador de C/C++