Considere o seguinte código:
COMEÇARO código acima não é um código C válido.
Mas o código a seguir é válido:
//Exemplo 1.cAntes da compilação, o início da macro, o número inteiro, a impressão e o final foi substituída por seu valor, e o código se torna um código C válido. Podemos verificar usando o seguinte comando:
GCC -e Exemplo1.cEste comando será exibido depois de expandir todas as macros.
Agora veremos diferentes tipos de macros:
1. Macros semelhantes a objetos:
Sintaxe:
#Define macro_name macro_valueSe a macro levar mais de uma linha, podemos fazê -lo da seguinte forma:
#Define macro_name macro_value1 \Esta macro parece um objeto de dados e é por isso que esse tipo de macro chamado como uma macro semelhante a um objeto.
// Exemplo2.cEm EXAPMLE2.C, Max é uma macro. Da saída, observamos que Máx é substituído por seu valor 200.
2. Macros do tipo função:
Sintaxe:
#define macro_name () macro_valuemacro_name é um nome definido pelo usuário da macro. Par de parênteses tem que colocar depois do macro_name. Nenhum espaço é permitido entre macro_name e parênteses. Também podemos passar argumentos nesse tipo de macros.
#define add (x, y) x+yEsta macro parece uma chamada de função e é por isso que esse tipo de macro chamou uma macro do tipo função.
// Exemplo3.cNo exemplo3.c, Vimos que, diferentemente da função de C, a macro substitui apenas o código por argumentos sem calcular. Então, podemos passar diferentes do tipo de dados usando a mesma macro.
Se colocarmos um espaço entre o nome da macro e o parêntese, ele funciona da mesma forma que uma macro semelhante a um objeto. Abaixo C Exemplo ilustra isso.
// Exemplo4.cNo exemplo4.c, vimos que a macro add é substituída por (x, y) x+y . O mesmo que uma macro semelhante a objetos.
3. Macro para colagem de token:
No idioma C, o operador ## é usado para colar token. Usando este operador, podemos combinar dois tokens válidos em um token válido.
Exemplo:
Se tentarmos a colagem do token que não gera um token válido, o compilador C dá um erro ou aviso.
// Exemplo6.cEm Exemplo6.c, Temos uma mensagem de erro porque, após uma combinação de dois tokens, recebemos um token inválido '52+'.
4. Macro para Stringizing:
Na linguagem C, # Operador é usado para converter um parâmetro macro em uma string constante. Quando um operador # precede com um parâmetro macro, o parâmetro se converte em uma string literal. Stringizing pode ser usado para macros semelhantes a objetos e de função.
Exemplo:
Em Exemplo7.c Temos uma string "Hello World" usando macro stringizing.
Conclusão:
Este artigo aprendeu sobre todos os tipos de macro, tipo Macros semelhantes a objetos, Macros do tipo função, Macro para colar, Macro para Stringizing e Macro para Stringizing na linguagem C. Agora podemos usar uma macro em nosso programa C sem dúvida.