0
#ifdef _DEBUG
// calls appropriate functions for message logging
#define LOGMESSAGE(stdStr) gLogger.LogMessage(stdStr, __FILE__, __LINE__);
// calls appropriate function for success logging
#define LOGSUCCESS(stdStr) gLogger.LogSuccess(stdStr, __FILE__, __LINE__);
// calls appropriate function for error logging
#define LOGFAILURE(stdStr) gLogger.LogFailure(stdStr, __FILE__, __LINE__);
#endif
#ifdef NDEBUG
// does nothing in release mode
#define LOGMESSAGE(stdStr)
// does nothing in release mode
#define LOGSUCCESS(stdStr)
// Logs failures in release mode
#define LOGFAILURE(stdStr) gLogger.LogFailure(stdStr, __FILE__, __LINE__);
#endif
說我叫宏像下面當宏擴展到什麼程度時臨時變量會發生什麼?
if (SomeFunc())
{
LOGSUCCESS("Success calling SomeFun()");
}
else
{
LOGFAILURE("Failure calling SomeFun()");
}
在釋放模式LOGSUCCESS是空白這是否意味着「成功調用SomeFunc()」字符串沒有編譯成代碼,將不存在在編譯的代碼中,還是遺留下來的,但宏沒有做任何事情呢?
編輯: 我的意思是它有效地讓這樣的代碼在釋放模式?
if (SomeFunc())
{
"Success calling SomeFun()";
}
else
{
gLogger.LogFailure("Failure calling SomeFun()", __FILE__, __LINE__);
}
或
if (SomeFunc())
{
}
else
{
gLogger.LogFailure("Failure calling SomeFun()", __FILE__, __LINE__);
}
運行預處理程序,看看自己! –
這兩件事情沒有區別。沒有任何效果的東西根本就沒有區別。 –
你是什麼意思運行預處理器? – EddieV223