频道栏目
首页 > 资讯 > 其他 > 正文

谈一谈关于LOG宏的参数问题

18-08-01        来源:[db:作者]  
收藏   我要投稿

如下定义LOG宏:

#include 
#define DBG_LOG	printf

int main(int argc, char *argv[])
{
	int x = 9;
	DBG_LOG("x=%d\n", x=(x>56:4));
	printf("x=%d\n", x);
	return 0;
}

想在某模块中取消LOG宏:

#include 
#define DBG_LOG	printf
#undef DBG_LOG
#define DBG_LOG
int main(int argc, char *argv[])
{
	int x = 9;
	DBG_LOG("x=%d\n", x=(x>56:4));
	printf("x=%d\n", x);//x == 6, 说明上面的宏参数列表仍被执行
	return 0;
}

防止#undef的宏参数列表被执行的方法:

#include 
#define DBG_LOG(...)	printf(__VA_ARGS__)
#undef DBG_LOG
#define DBG_LOG(...)	//printf(__VA_ARGS__)
int main(int argc, char *argv[])
{
	int x = 9;
	DBG_LOG("x=%d\n", x=(x>56:4));
	printf("x=%d\n", x);//x == 9
	return 0;
}
相关TAG标签
上一篇:有关SQL语句的分类解释
下一篇:关于C++中new、operator new和placement new的区别详解
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站