Fonction comme les Macros en C

Je suis en train d'essayer de comprendre l'idée de fonction comme les Macros cependant, il existe quelques points qui rampant moi. Par exemple, disons que nous avons:

#define Max(a,b)  ((a)>(b)) ? (a):(b))

et je l'appelle comme tels

int i = Max(4,5);

Cela permettra d'évaluer une expression conditionnelle équivalent à a>b? Si oui, alors a, d'autre b. Mais je suis confus quant à la façon dont la fonction Max sait quoi faire avec les arguments. À la différence d'une fonction réelle, la mise en œuvre n'est pas écrit dans le code, dans le programme appelant. la déclaration du droit de l'instruction define faire cela pour moi? Ses juste une chose nouvelle pour moi et je veux m'assurer de comprendre ce qui se passe ici.

Cette partie particulière de la fonction comme les macros me confond. Je sais que ces types de macros sont utiles pour réduire les frais généraux, car ils excluent la JSR RTS instructions du processeur qui économise de la mémoire sur la pile.

Ce n'est pas une fonction. Une macro est littéralement juste le texte de substitution, qui se produit avant que le compilateur s'exécute.
Ceci peut aider.
Vous rendez-vous compte que le '?' est un opérateur conditionnel ternaire?
Je suis pas familier avec ternaire des opérateurs conditionnels, mais ma confusion était plus à la façon dont la macro met en œuvre dans l'ensemble du programme. @OliCharlesworth je suis conscient que ce n'est pas une fonction, mais se comporte de la fonction.
Ok, alors je ne suis pas sûr exactement ce que votre question se pose au sujet!

OriginalL'auteur PresidentRFresh | 2013-03-22