C 预处理器有理由被 C++ 社区恐惧和回避。内联函数、常量和模板通常是#define.
#define
以下宏:
#define SUCCEEDED(hr) ((HRESULT)(hr) >= 0)
绝不优于安全类型:
inline bool succeeded(int hr) { return hr >= 0; }
但是宏确实有它们的位置,请列出你发现的宏的用途,如果没有预处理器,你 就无法 做到。
请将每个用例放在一个单独的答案中,以便对其进行投票,如果您知道如何在没有预处理者的情况下获得其中一个答案,请在该答案的评论中指出如何。
作为调试函数的包装器,自动传递__FILE__,__LINE__等内容:
__FILE__
__LINE__
#ifdef ( DEBUG ) #define M_DebugLog( msg ) std::cout << __FILE__ << ":" << __LINE__ << ": " << msg #else #define M_DebugLog( msg ) #endif