小编典典

C++ 宏什么时候有用?

all

C 预处理器有理由被 C++ 社区恐惧和回避。内联函数、常量和模板通常是#define.

以下宏:

#define SUCCEEDED(hr) ((HRESULT)(hr) >= 0)

绝不优于安全类型:

inline bool succeeded(int hr) { return hr >= 0; }

但是宏确实有它们的位置,请列出你发现的宏的用途,如果没有预处理器,你 就无法 做到。

请将每个用例放在一个单独的答案中,以便对其进行投票,如果您知道如何在没有预处理者的情况下获得其中一个答案,请在该答案的评论中指出如何。


阅读 62

收藏
2022-08-02

共1个答案

小编典典

作为调试函数的包装器,自动传递__FILE__,__LINE__等内容:

#ifdef ( DEBUG )
#define M_DebugLog( msg )  std::cout << __FILE__ << ":" << __LINE__ << ": " << msg
#else
#define M_DebugLog( msg )
#endif
2022-08-02