如何使用宏函数编写以下代码段
How to write the below piece of code using macro function?
我应该如何使用宏函数编写以下一段代码?
#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_
}
编辑:如果您希望宏扩展到其他宏,那是不可能的。
相关文章:
- 我应该如何修改此代码以使用给定字符串中的字母打印菱形图案
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- Netbeans 10:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- 在什么情况下,我想在 C/C++ 代码中使用内联汇编代码
- 为什么这些代码仍然使用 lvalue 函数?
- 为什么我们不在下面给出的代码中使用指针来实例化C++的实体对象?
- 链接器命令失败,macOS 上的退出代码为 1(使用 -v 查看调用)
- 创建一个数组,以允许用户输入存储并稍后在代码中使用
- 为什么我的 c++ 代码在使用堆栈时以退出代码 11 结尾?
- 如何在软件代码中使用ofstream创建文件
- 为什么Microsoft在新代码中使用结构而不是类?
- 代码::块C++使用 MacOS 编译 Mojave : 致命错误: sys/cdefs.h: 没有这样的文件或目录
- clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) - 体系结构的未定义符号 x86_64:
- 如何修复 clang: 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- 示例代码中使用分隔符将 std::string 拆分为 std::vector 的范围问题
- 如何在C++代码上使用 Tcl-C API
- Xcode:链接器命令失败,退出代码为 1(使用 -v 查看调用)[C++]
- 为什么我们应该在下面的代码中使用模板包装器?
- 将-Wtype限制与类型泛型代码一起使用
- 如何在C++代码之上使用标准的Xcode GUI