C++ · Essencial · Português · Técnico
macro
Trecho de texto definido com #define e substituído pelo pré-processador antes da compilação. Não conhece tipos nem escopo, e pode ter ou não argumentos.
Onde usar
Aparece em código legado, em flags de plataforma e nas guardas de include. Em código novo, constexpr, inline e templates costumam ser preferidos por respeitarem tipos e escopo.
Em código
#define SQ(x) ((x) * (x))
int a = 3;
int b = SQ(a + 1); // 16
// SQ(a++) avalia a++ duas vezesExemplos
Troque essa macro por uma função constexpr.
O compilador mostrou um erro estranho porque a macro expandiu antes.
Cuidado
Os argumentos de uma macro são repetidos como texto: SQ(i++) executa o incremento duas vezes.
Sinônimos
#define
Origem
Abreviação de macroinstrução.