sha*_*oth 18
是的,这是一个.当您需要将跟踪代码添加到程序中时,一个配置包含它而另一个完全省略,您必须使用宏.
就像是:
#ifdef WITH_LOGGING
#define LOG( x ) DoLog( x )
#else
#define LOG( x )
#endif
Run Code Online (Sandbox Code Playgroud)
现在你用这种方式使用它:
LOG( L"Calling blahblahblah with " + getSomeStringHardToCompute() );
Run Code Online (Sandbox Code Playgroud)
并且在配置中WITH_LOGGING你有这个代码,否则它被完全省略 - 甚至不存在于二进制文件中,因此
Dum*_*der 10
直接来自Scott Myer的Effective C++ - > 1
鉴于可用性和内联的可用性,您对预处理器的需求减少了,但并未完全消除.当你放弃#include时,这一天远非如此,#ifdef/#ifndef继续在控制编译方面发挥重要作用.目前还没有时间退出预处理器,但你绝对应该计划开始更长时间的假期.
小智 9
你一直在看一些糟糕的C++代码.我使用宏的地方仅限于:
我不认为这四个是可以避免的.