Macros (tpm)

Macros (tpm)

Macros expandem em tempo de compilação — o código é reescrito antes de rodar.

js
tpm quadrado(x) {
  x * x
}

tpm cubo(x) {
  x * quadrado(x)
}

cria r1 = quadrado(5)
grita-ae("quadrado(5) =", r1)  // 25

Como funciona

Quando o compilador encontra quadrado(5), ele substitui pela expressão 5 * 5 antes da execução. Nenhuma chamada de função acontece em runtime.

Composição

Macros podem chamar outras macros:

js
tpm dobro(x) { x * 2 }
tpm quadruplo(x) { dobro(dobro(x)) }

grita-ae(quadruplo(3))  // 12

Diferença para funções

Função Macro
Quando roda runtime compilação
Overhead de chamada sim não
Pode usar em tipos/expressions de compile-time não sim