J'ai écrit un peu de C, et je peux le lire assez bien pour obtenir une idée générale de ce qu'il est en train de faire, mais à chaque fois j'ai rencontré une macro, il a jeté moi complètement. Je finis par avoir à se souvenir de ce que la macro est un et remplacer dans ma tête que j'ai lu. Ceux que j'ai rencontrés, qui ont été intuitive et facile à comprendre étaient toujours comme de mini-fonctions, donc je me suis toujours demandé pourquoi ils ne sont pas seulement des fonctions.
Je peux comprendre la nécessité de définir les différents types de débogage ou de la croix-plate-forme s'appuie dans le préprocesseur, mais la possibilité de définir arbitraire des substitutions semble être utile seulement pour faire de, déjà difficile langue encore plus difficile à comprendre.
Pourquoi une telle complexe de préprocesseur introduit pour C? Et quelqu'un aurait-il un exemple d'utilisation qui va me faire comprendre pourquoi il semble toujours être utilisée à des fins autres que de simples si #debug style conditionnel compilations?
Edit:
Après avoir lu un certain nombre de réponses que j'ai encore tout simplement pas l'obtenir. La réponse la plus commune est de code en ligne. Si le mot-clé inline ne pas le faire alors soit il a une bonne raison de ne pas le faire, ou de la mise en œuvre des besoins de fixation. Je ne comprends pas pourquoi d'un tout autre mécanisme est nécessaire que signifie "vraiment inline ce code" (à part la forme du code, écrite avant inline a autour). Aussi je ne comprends pas l'idée qui a été mentionné que "si le son est trop bête pour être mis dans une fonction". Sûrement n'importe quel morceau de code qui prend en entrée et produit une sortie est mieux le mettre dans une fonction. Je pense que j'ai peut-être parce que je ne suis pas habitué à la micro-optimisations de la rédaction de C, mais le préprocesseur se sent juste comme une solution à quelques problèmes simples.