Quand utiliser la fonction comme les macros en C

Je lisais un peu de code écrit en C ce soir, et au sommet de
le fichier a été la fonction-comme macro HASH:

#define HASH(fp) (((unsigned long)fp)%NHASH)

Cette gauche me demandais, pourquoi devrait-on choisir de mettre en œuvre un
fonction de cette manière d'utiliser une fonction comme macro au lieu de la mise en œuvre de
comme un régulier à la vanille fonction C? Quels sont les avantages et les
les inconvénients de la mise en œuvre?

Merci beaucoup!

Comme les fonctions de hachage aller, c'est assez faible - mais alors, il semble que les données qu'il a à traiter est assez simple aussi.
En fait, il n'est pas très vif pour en faire un macro. Un inline fonction statique c'est probablement plus approprié. C a eu inline depuis 1999 et gcc avant même que. Cette question a été cité comme faisant double emploi avec kfifo utilisation de définit. Si le MS-Windows est la raison pour laquelle les gens disent cette macro est raisonnable, comment sont-ils liés?

OriginalL'auteur Ralph | 2009-10-24