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