Programação C

Macro em linguagem C

Macro em linguagem C
Uma macro em linguagem C é um trecho de código ao qual foi atribuído um nome. Quando o nome é usado em qualquer parte do programa, o valor da macro é substituído antes da compilação do programa. Neste artigo, veremos em detalhes como escrever uma macro na linguagem C.

Considere o seguinte código:

COMEÇAR
INTEIRO n = 5;
PRINT ("O valor de n é% d", n);
FIM

O código acima não é um código C válido.

Mas o seguinte código é válido:

//Exemplo 1.c
#define START int main ()
#define END
#define INTEGER int
#define PRINT (A, B) printf (A, B)
COMEÇAR
INTEIRO n = 5;
PRINT ("O valor de n é% d", n);
FIM

Antes da compilação, a macro START, INTEGER, PRINT e END foram substituídos por seus valores, e o código se torna um código C válido. Podemos verificar usando o seguinte comando:

gcc -E Example1.c

Este comando aparecerá depois de expandir todas as macros.

Agora veremos diferentes tipos de macros:

1. Macros semelhantes a objetos:

Sintaxe:

#define macro_name macro_value

Se a macro ocupar mais de uma linha, podemos fazer da seguinte maneira:

#define macro_name macro_value1 \
macro_value2 \
macro_value3
# define MAX 200

Esta macro se parece com um objeto de dados, por isso este tipo de macro é chamado de macro semelhante a um objeto.

// Exemplo2.c
//#incluir
# define MAX 200
int main ()

printf ("O valor MAX é:% d", MAX);
return 0;

Dentro Exapmle2.c, MAX é uma macro. A partir da saída, observamos que MAX é substituído por seu valor 200.

2. Macros semelhantes a funções:

Sintaxe:

#define macro_name () macro_value

macro_name é um nome definido pelo usuário da macro. Par de parênteses deve ser colocado após o macro_name. Nenhum espaço é permitido entre macro_name e parênteses. Também podemos passar argumentos neste tipo de macros.

#define add (x, y) x + y

Esta macro parece uma chamada de função, por isso este tipo de macro é chamada de macro semelhante a uma função.

// Exemplo3.c
# define add (x, y) x + y
int main ()

int a;
float b;
a = adicionar (4,5);
b = adicionar (2.5,3.6)
return 0;

No Exemplo 3.c, vimos que, ao contrário da função C, a macro substitui apenas o código por argumentos sem calculá-lo. Então, podemos passar diferentes tipos de dados usando a mesma macro.

Se colocarmos um espaço entre o nome da macro e parênteses, funcionará da mesma forma que uma macro semelhante a um objeto. O exemplo C abaixo ilustra isso.

// Exemplo4.c
# define add (x, y) x + y
int main ()

int a;
float b;
a = adicionar (4,5);
b = adicionar (2.5,3.6)

No Exemplo 4.c, vimos que a adição de macro é substituída por (x, y) x + y . O mesmo que uma macro semelhante a um objeto.

3. Macro para colagem de token:
Na linguagem C, o operador ## é usado para colar token. Usando este operador, podemos combinar dois tokens válidos em um token válido.
Exemplo:

// Exemplo 5.c
#define MARGE (x, y) x ## y
int main ()

num int = MARGE (52,34);
return 0;

Se tentarmos colar um token que não gere um token válido, o compilador C fornece um erro ou aviso.

// Exemplo6.c
#define MARGE (x, y) x ## y
int main ()

num int = MARGE (52, +);
return 0;

Dentro Exemplo 6.c, temos uma mensagem de erro porque, após uma combinação de dois tokens, obtemos um token inválido '52 + '.

4. Macro para stringizing:
Na linguagem C, o operador # é usado para converter um parâmetro de macro em uma constante de string. Quando um operador # precede um parâmetro de macro, o parâmetro é convertido em um literal de string. Stringizing pode ser usado para macros do tipo objeto e do tipo função.
Exemplo:

// Exemplo7.c
#define STRINGIZING (x) #x
int main ()

printf (STRINGIZING (Hello World));
return 0;

Dentro Exemplo 7.c temos uma string “Hello World” usando a macro STRINGIZING.

Conclusão:

Este artigo aprendeu sobre todos os tipos de macro Macros semelhantes a objetos, Macros semelhantes a funções, Macro para colar token, Macro para sequenciamento e macro para sequenciamento em linguagem C. Agora podemos usar uma macro em nosso programa C sem nenhuma dúvida.

Como reverter a direção de rolagem do Mouse e Touchpads no Windows 10
Mouse e Touchpads não apenas torna a computação mais fácil, mas mais eficiente e menos demorada. Não podemos imaginar uma vida sem esses dispositivos,...
Como alterar o ponteiro do mouse e tamanho do cursor, cor e esquema no Windows 10
O ponteiro do mouse e o cursor no Windows 10 são aspectos muito importantes do sistema operacional. Isso também pode ser dito para outros sistemas ope...
Mecanismos de jogos gratuitos e de código aberto para o desenvolvimento de jogos Linux
Este artigo cobrirá uma lista de mecanismos de jogo gratuitos e de código aberto que podem ser usados ​​para desenvolver jogos 2D e 3D no Linux. Exist...