如何使用宏函数编写以下代码段

How to write the below piece of code using macro function?

本文关键字:代码 何使用 函数      更新时间:2023-10-16

我应该如何使用宏函数编写以下一段代码?

#ifdef LOG_ENABLED      
    m_logger->Log(szType,szMessage);
#endif

我做了下面提到的事情,它导致了错误:-

#define _LOG_MSG_CND_BEGIN_ #ifdef LOG_ENABLED
#define _LOG_MSG_CND_END_ #endif
#define WriteLogMessage(szType,szMessage) 
{
_LOG_MSG_CND_BEGIN_
    m_logger->Log(szType,szMessage);
_LOG_MSG_CND_END_
}

请让我知道如何为上述三段代码编写宏函数而没有任何错误。

在同一段代码中使用了内联函数,但在调试时,我看到内联函数没有被视为内联函数,所以我想在这种情况下使用宏函数。

我使用的内联函数如下所述:-

inline void WriteLogMessage(LOG_LEVEL szType, LPCTSTR szMessage){
#ifdef LOG_ENABLED      
    m_logger->Log(szType,szMessage);
#endif
}

标准的 C 预处理器有点白痴,根本不懂。你想要这样的东西:

#if defined LOG_ENABLED
#define WriteLogMessage(szType,szMessage) m_logger->Log(szType,szMessage)
#else
#define WriteLogMessage(szType,szMessage)
#endif

预处理器指令必须是一行中的第一件事:

#define _LOG_MSG_CND_BEGIN_ 
#ifdef LOG_ENABLED
#define _LOG_MSG_CND_END_ 
#endif
#define WriteLogMessage(szType,szMessage) 
{
_LOG_MSG_CND_BEGIN_
    m_logger->Log(szType,szMessage);
_LOG_MSG_CND_END_
}

编辑:如果您希望宏扩展到其他宏,那是不可能的。

相关文章: