Usina BRAdvPL Guia
Entrar
← Todos os tópicos
DIRETIVAPublicado

#define

#define <identificador> [<texto de substituição>]

Define identificadores, constantes manifestas ou pseudofunções substituídas pelo pré-processador.

Pré-processadorConstantesPseudofunçõesCompilação
01 · VISÃO GERAL

Visão geral

#define associa um identificador sensível a maiúsculas e minúsculas a um texto de substituição. A expansão ocorre durante o pré-processamento, antes da compilação, e não cria uma variável em tempo de execução. Também pode definir um símbolo sem valor para controlar #ifdef e #ifndef.

02 · SINTAXE

Sintaxe

#define <identificador> [<texto de substituição>]
03 · EXEMPLO PRÁTICO

Constantes manifestas

#define MAX_PRODUTOS 150
#define MSG_ERRO "Operação inválida para este usuário."

User Function ExDefine()
    Local nQuantidade := 151

    If nQuantidade > MAX_PRODUTOS
        MsgStop(MSG_ERRO, "Validação")
    EndIf
Return
Resultado esperado

Os identificadores são substituídos antes da compilação; não ocupam memória como variáveis de execução.

04 · EXEMPLO PRÁTICO

Pseudofunção

#define AREA(nBase, nAltura) (nBase * nAltura)

User Function ExArea()
    Local nResultado := AREA(10, 12)

    ConOut(CValToChar(nResultado))
Return
Resultado esperado

O pré-processador expande AREA(10, 12) para a expressão correspondente.

BOAS PRÁTICAS
  • Use nomes em maiúsculas por convenção.
  • #define pode criar uma constante manifesta, um símbolo de controle ou uma pseudofunção com argumentos.
  • Envolva a expressão de uma pseudofunção entre parênteses para preservar a precedência.
  • A definição vale a partir da linha onde aparece e, em regra, dentro da unidade fonte após a expansão dos includes.
ARMADILHAS COMUNS
  • A substituição é textual: argumentos com efeitos colaterais podem ser avaliados mais de uma vez em pseudofunções mal construídas.
  • Não use #define para esconder lógica complexa; prefira uma função real quando depuração, validação ou tipo forem importantes.
  • Identificadores definidos são sensíveis a maiúsculas e minúsculas.

Conteúdos relacionados

REFERÊNCIAS
  1. TOTVS. #define. TDN. Última alteração em 22 mar. 2019.
  2. TOTVS. Diretivas para o compilador. TDN.
  3. TOTVS. #ifdef. TDN.
  4. TOTVS. #ifndef. TDN.
  5. TOTVS. #include. TDN.
  6. TOTVS. #undef. TDN.
Situação
Publicado
Página criada em
Última revisão em
Idioma original
Português
Revisão
Usina.BR