Macros (tpm)
Macros (tpm)
Macros expandem em tempo de compilação — o código é reescrito antes de rodar.
tpm quadrado(x) {
x * x
}
tpm cubo(x) {
x * quadrado(x)
}
cria r1 = quadrado(5)
grita-ae("quadrado(5) =", r1) // 25Como 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:
tpm dobro(x) { x * 2 }
tpm quadruplo(x) { dobro(dobro(x)) }
grita-ae(quadruplo(3)) // 12Diferenç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 |