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.