简而言之,我要做的是使程序的调试版本输出其他信息。但不必检查
#IFDEF DEBUG
...
#ENDIF
在高级代码中间,我更愿意做这样的事情
Debug::PrintDebugMessage(...);
所以我的问题是,如果我像这样做这个假设功能
inline static void PrintDebugMessage(...);
void PrintDebugMessage(...)
{
#IFDEF DEBUG
...
#ENDIF
}
未定义DEBUG时,结果程序会发生变化吗?也就是说,如果在未定义DEBUG的情况下调用了此函数,那么在低级代码方面会发生任何事情,还是编译器会简单地忽略空白函数? (如果我对此措辞混乱,我深表歉意)
最佳答案
为什么不仅仅实现PrintDebugMessage(...)
宏呢?
您定义:
#ifdef _DEBUG
# define PrintDebugMessage(...) \
<Implement>
#else
# define PrintDebugMessage(...)
#endif
在发行二进制文件中不会生成任何代码,但更重要的是,您可以使用
__LINE__
,__FILE__
宏以及__func__
函数。这些对于调试非常有用,但仅在宏中有用。