Le préprocesseur C est à juste titre craints et méprisés par le C++ de la communauté. Dans bordées de fonctions, consts et les modèles sont généralement plus sûrs et de meilleure alternative à un #define
.
La macro suivante:
#define SUCCEEDED(hr) ((HRESULT)(hr) >= 0)
est en aucun cas supérieure au type de coffre-fort:
inline bool succeeded(int hr) { return hr >= 0; }
Mais elles n'ont leur place, veuillez énumérer les utilisations que vous trouver pour les macros que vous ne pouvez pas faire sans le préprocesseur.
S'il vous plaît mettre à chaque cas d'utilisation dans une autre réponse, de sorte qu'il peut être voté, et si vous savez comment atteindre l'une des réponses sans le preprosessor souligner comment, dans cette réponse, les commentaires.