Objetivos
Macro
Uma macro é uma trecho de código que possui um nome e um valor ou expressão associado. Quando
utilizada ao longo de nossos programas, a macro é substituído pelo seu valor ou expressão.
Sintaxe
#define nome_macro valor_macro
Onde
nome_macro: nome da macro
valor_macro: string , valor numérico ou expressão da macro
Exemplo 1
#include <iostream>
using namespace std;
#define MINHA_MACRO 2
int main()
{
cout<< "macro:" << MINHA_MACRO;
return 0;
}
Saída
macro:2
O assunto macro pode ser visto em
Tutorial C: Macros e a
diferença entre macros e funções pode ser visto em
Tutorial C: Macro vs Função.
C++ suporta os quatro tipos básicos de macros : tipo objeto, cascata , multilinha e função.
Nesta parte do tutorial vamos aprender esses tipos e ver exemplos.
Tab. 1: tipos de macros
Tipo |
Descrição |
Objeto |
Define uma macro com valor |
Cascata |
Define uma macro contendo macros |
Multilinha |
Define uma macro com várias linhas |
Função |
Definie uma macro em forma de função |
Na macro tipo objeto, declaramos uma macro com um nome e atribuímos um valor a macro
utilizando a sintaxe abaixo.
Sintaxe
#define NOME_MACRO valor_macro
Exemplo 1
#include <iostream>
using namespace std;
#define MINHA_MACRO 2
int main()
{
cout<< "macro:" << MINHA_MACRO;
return 0;
}
Saída
macro:2
Na macro em cascata, declaramos uma macro com um nome e atribuímos um valor a macro e
utilizamos essa mesma macro como parte de uma nova macro.
Sintaxe
#define NOME_MACRO1 valor_macro
#define NOME_MACRO2 expressao_usando_NOME_MACRO1
Exemplo 2
#include <iostream>
using namespace std;
#define MINHA_MACRO 2
#define MINHA_MACRO2 MINHA_MACRO*2
int main()
{
cout<< "macro:" << MINHA_MACRO2;
return 0;
}
Saída
macro:4
A macro multilinha possui as mesmas características das anteriores. Na declaração
do corpo de seu corpo, utilizamos (\) como quebra de linha após expressões, por exemplo.
Sintaxe
#define nome_macro \
expressao1 \
expressao2 \
expressao3 \
Exemplo 3
#include <iostream>
using namespace std;
#define TEXTO \
"uma \
string \
qualquer"
int main()
{
cout<< "macro:" << TEXTO;
return 0;
}
Saída
macro:uma string qualquer
No tipo função, a macro é declarada como uma função que possui parâmetros. Pode ser
declarada em multilinha. Caso não haja parâmetros, a macro atua como multilinha.
Sintaxe
#define NOME_MACRO(param1, param2, paramN)
Exemplo 4
#include <iostream>
using namespace std;
#define ADICAO(p, q) \
(p) + (q)
int main()
{
cout<< "macro:" << ADICAO(2,2);
return 0;
}
Saída
macro:4
Macro nativas para depuração
Para informações de depuração como linha, arquivo e data de compilação, as macros __FILE__,
__LINE__, __DATE__, __TIME__ e __TIMESTAMP__ que podem ser
utilizadas para exibição de informações de debug, erro, log e outros.
Sintaxe
NOME_MACRO
Onde
NOME_MACRO:
__FILE__: nome do arquivo .cpp
__LINE__: linha
__DATE__: data. MM DD AAAA
__TIME__: hora da compilação
__TIMESTAMP__: data hora. Mes Dia hh:mm:ss aaaa
Exemplo 5
#include <iostream>
using namespace std;
int main()
{
cout << __FILE__ << endl;
cout << __LINE__ << endl;
cout << __DATE__ << endl;
cout << __TIME__ << endl;
cout << __TIMESTAMP__ << endl;
}
Saída
main.cpp
15
Dec 19 2022
13:13:03
Mon Dec 19 13:13:01 2022
Histórico de atualizações
- 29/07/2025 - revisão 3 - Correção: targets 'Tutorial C', sintaxe 'tipo função', link 'Macros Nativas'; Ajustes: sintaxes
- 28/09/2024 - revisão 2 - correções e ajustes pontuais
- 09/02/2024 - revisão 1 - correção em navegação e erros gramaticais
- 30/06/2023 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.