其他分享
首页 > 其他分享> > C宏何时有益?

C宏何时有益?

作者:互联网

C预处理器有理由被C社区所害怕和避开.内联函数,函数和模板通常是#define的更安全和更好的替代品.

以下宏:

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

绝不是优于安全类型:

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

但宏确实有它们的位置,请列出您为宏找到的用途,如果没有预处理器,您就无法做到.

请将每个用例放在一个单独的答案中,以便可以进行投票,如果您知道如何在没有预备教授的情况下实现其中一个答案,请指出该答案的评论.

解决方法:

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

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

标签:c,c-preprocessor
来源: https://codeday.me/bug/20190915/1805398.html