C + + 社区有理由害怕和回避 C预处理器。内联函数、常量和模板通常比 #define
更安全、更优越。
以下宏观:
#define SUCCEEDED(hr) ((HRESULT)(hr) >= 0)
绝不会优于类型安全:
inline bool succeeded(int hr) { return hr >= 0; }
但是宏也有它们的位置,请列出在没有预处理器的情况下 不行所使用的宏。
请把每个用例在一个单独的答案,以便它可以投票,如果你知道如何实现没有前处理程序的答案之一,指出如何在该答案的意见。