As diretivas listadas abaixo são suportadas pela linguagem C++. Clique sobre o nome da diretiva para ser direcionado para sua seção.

Tab. 1: Diretivas
Diretiva Descrição
#include Inclusão de recursos
#define Definição de constantes
#if-#endif Diretiva condicional
#if-#else Diretiva condicional
#undef Desfaz uma diretiva
#ifdef Checa se diretiva definida
#ifndef Checa se diretiva não definida
#error Gera erro de compilação
#warning Gera aviso ao compilar
#pragma -

As diretivas de compilação foram vistas em Tutorial C : Diretivas.

A diretiva #include é utilizada para informar que nossos programas precisam utilizar recursos de uma biblioteca nativa, de terceiros ou do próprio usuário.

Sintaxe
#include <nome_recurso> //nativo
#include "nome_recurso"
Onde
nome_recurso: biblioteca nativa, do usuário ou outro arquivo que contém código.
Exemplo 1
#include <iostream>
using namespace std;

int main()
{
    cout << "Teste!";
    return 0;
}
Saída
Teste!

Essa diretiva é usada para criar macros, constantes e renomear recursos utilizados. O assunto Macro será visto na próxima seção.

Sintaxe
#define nome_definicao valor
Onde
nome_definicao: Nome de constantes, macro ou outro.
valor: valor númerico, string ou expressão.
Exemplo 2
#include <iostream>
using namespace std;

#define TESTE "Teste!"
int main()
{
    cout << TESTE;
    return 0;
}
Saída
Teste!

Essa diretiva é usada para checar se uma macro foi definida como true ou false, e executar de acordo. Semelhante ao comando if.

Sintaxe
#if constante
        //trecho omitido
#endif
Onde
constante: constante definida utilizando #define.
Exemplo 3
#include <iostream>
using namespace std;

#define TESTE 0 //0 false 1 true

int main()
{
    #if TESTE 
        cout<< "mensagem de teste";
    #endif
    
    return 0;
}
Saída
mensagem de teste

Essa diretiva é usada para checar se uma macro foi definida como true ou false e executar de acordo. Caso seja true, o código do corpo #if é executado. Caso contrário, o corpo do comando #else é executado. Semelhante ao comando if-else.

Sintaxe
#if constante
        //trecho omitido
#else
        //trecho omitido
#endif
Onde
constante: constante definida utilizando #define.
Exemplo 4
#include <iostream>
using namespace std;

#define TESTE 0 //0 false 1 true

int main()
{
    #if TESTE 
        cout<< "anbiente de teste";
    #else
        cout<< "ambiente de normal";
    #endif
    
    return 0;
}

Saída
ambiente de producao

A diretiva #undef é bem simples. Essa diretiva é utilizada para desfazer um #define declarado para que uma nova definição possa ser feita se necessário.

Sintaxe
#undef definicao
Onde
definicao: Constante ou macro criado utilizano #define.
Exemplo 5
#include <iostream>
using namespace std;

int main()
{
	#define CONSTANTE 10
	cout << CONSTNATE << endl;
	#undef CONSTANTE
	#define CONSTANTE 100
	cout << CONSTANTE << endl;
}
Saída
10
100

A diretiva #ifdef checa se uma macro foi definida e executa um bloco de código de acordo com resultado da checagem que retorna true ou false. Outros #defines podem estar contido no bloco #ifdef.

Sintaxe
#ifdef definicao
        //#defines aqui
#endif
Onde
definicao: Constante ou macro criado utilizano #define.

Semelhante a diretiva #if, #ifdef pode ser utilizando como a diretiva #else:

Exemplo 6
#define DEBUG 1 

#ifdef DEBUG
    #define OUTRA_MACRO 0
#else
    #define OUTRA_MACRO1 1
    #define OUTRA_MACRO2 2
#endif
Saída
-

A diretiva #ifndef checa se uma macro não foi definida e executa um bloco de código de acordo com resultado da checagem que retorna true ou false. Semelhante a #ifdef.

Sintaxe
#ifndef definicao
        //#defines aqui
#endif
Onde
definicao: Constante ou macro criado utilizano #define.

Semelhante a diretiva #if, #ifndef pode ser utilizando como a diretiva #else:

Exemplo 7
#define DEBUG 1 

#ifndef DEBUG
    #define DEBUG 1
#else
    #define OUTRA_MACRO 1
    #define OUTRA_MACRO2 1
#endif
Saída
-

A diretiva #error é utilizada para forçar um erro de compilação. Pode ser usada como alerta para trechos de código não implementados, por exemplo. Uma mensagem é exibida pelo compilador durante o processo de compilação e a compilação é encerrada.

Sintaxe
#error "mensagem"
Onde
mensagem: string contendo uma mensagem de erro.
Exemplo 8
#include <iostream>
using namespace std;

void funcao() {
#error "Ainda falta codificar a função"
} 

int main()
{
//trecho omitido
funcao();
}
Saída
-

A diretiva warning é semelhante a diretiva #error, é utilizada para gerar uma mensagem de aviso durante o processo de compilação sem o encerramento da compilação.

Sintaxe
#warning "mensagem"
Onde
mensagem: string contendo uma mensagem de aviso.
Exemplo 9
#include <iostream>
using namespace std;

void funcao() {
#warning "Ainda falta codificar a função"
} 

int main()
{
//trecho omitido
funcao();
}
Saída
-
  1. 29/08/2025 - revisão 4 - Ajustes em sintaxe; Correções pontuais
  2. 28/09/2024 - revisão 3 - correções e ajustes pontuais
  3. 30/08/2024 - revisão 2 - Correção em links de objetivos
  4. 09/02/2024 - revisão 1 - correção em navegação,exemplo #define e erros gramaticais
  5. 30/06/2023 - versão inicial