Ir ao conteúdo

Dúvida simples sobre macros.


claudio.g.chepa

Posts recomendados

Postado

Boa tarde, pessoal.

Gostaria de saber qual a vantagem em eu usar macros como funções simples em c ou c++ no lugar de usar uma função no modo tradicional. Por exemplo:

#define MAX(a,  ((a)>(?(a))

Obrigado.

Postado

Nesse caso, quando o pré-processador encontra 'define', ele apenas substitui MAX no código pelo if alternativo.

Se fosse função teria o processo de escrever na pilha, etc.

Postado

Ok, mas de um modo geral, qual a vantagem de deu usar macros? Só são vantajosas quando são macros pequenas como a do exemplo ou são boas também para subsituir funções maiores? São bastante usadas ou é algo que quase ninguém usa? Era isso que eu queria saber.

Postado

chepa,

Ok, mas de um modo geral, qual a vantagem de deu usar macros? Só são vantajosas quando são macros pequenas como a do exemplo ou são boas também para subsituir funções maiores? São bastante usadas ou é algo que quase ninguém usa? Era isso que eu queria saber.

Acho que uma boa resposta seria: use-a com cautela e parcimônia. As macros ajudam a dar alguma clareza no código, mas dificultam um pouco o debugging do código.

E é necessário alguma prudência com o uso, principalmente aos novatos, pois pode induzir a erros. Copie e cole o código abaixo e depois confira o resultado. Eu usei o seu exemplo de macro: :rolleyes:

#include <stdio.h>
#define MAX(a, ((a)>( ? (a))

int main ()
{
int i, j;

i = 1;
j = 3;

MAX(i++, j++);

printf("%d - %d", i, j);

return 0;
}

[]'s

LNW

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!