如何将宏名称与其参数连接以创建新宏?

时间:2017-02-17 07:00:23

标签: c

为了减少二进制文件大小,我想在编译时删除日志(基于日志级别)。 目前的代码:

#define LOG(level,msg) log_write(level,msg)

它随处可用作LOG(ERROR,msg),LOG(INFO,msg)等。

我尝试隔离日志(不在日志记录位置修改)

#define LOG(level,msg)  LOG_##level(level,mgs)

然后引入新的编译标志(LOG_LEVEL_x) 并在编译时根据所选的日志级别删除,如下所示:

#ifdef LOG_LEVEL_DEBUG
#define LOG_DEBUG(level,msg) log_write(level,msg)
#else
#define LOG_DEBUG(level,msg)

现在,问题是

#define LOG(level,msg)  LOG_##level(level,msg)

给出如下错误 错误:粘贴" LOG _"和"("不提供有效的预处理令牌。

我该如何解决这个问题?没有修改所有日志记录位置的任何解决方案?

0 个答案:

没有答案