所以,简而言之,我要做的是让我的程序的调试版本输出附加信息。但不必检查
#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__
函数。这些非常适合调试,但仅在宏中有用。
关于c++ - 没有代码的内联函数会影响输出的二进制文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21313841/