嵌套#ifdef的带参宏定义用法

 

#ifdef DEBUGTEST
     functionName1();        % write log
#endif
functionName1();        % write log


void functionName1()
{
#ifdef DEBUGTEST
    % function body
#endif
return;
};

 

 以上两个例子是期望在调用function Name1函数之前优先进行#ifdef的判断,但是在实现的时候都不太好,第一个例子中每次写log都需要三行代码来实现,如果写log的地方比较多,就会让程序看起来很乱;第二种方法虽然只有一行就能写log,但是如果DEBUGETESST宏关闭后仍然需要到写log的函数种执行一遍,这样增加了程序的运行成本,为了避免上述两种情况,可以使用带参数宏定义的方法将第一个例子中的#ifdef隐藏起来。例子如下(实际宏定义时候需要使用#ifdef来嵌套#define)。

#ifdef DEBUGTEST
#define FUNCTIONNAME1(logTitle,pBuffer,pBufferSize) \
    functionName1(logTitle,pBuffer,pBufferSize)
#else
    #define FUNCTIONNAME1(logTitle,pBuffer,pBufferSize)
#endif

functionName1函数的函数声明以及定义:

% 声明
void functionName1(const char *logTitle,int *pBuffer,int pBufferSize);

% 定义
void functionName1(const char *logTitle,int *pBuffer,int pBufferSize)
{
    return;
};

这样就可以在程序中直接调用FUNCTIONNAME1(logTitle,pBuffer,pBufferSize)实现对functionName1(const char *logTitle,int *pBuffer,int pBufferSize)的替换调用。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值