日常使用的C语言宏帮助打log

日常使用的C语言宏帮助打log

项目陷入僵局,写个blog放松一下。
cppdebug或者打log的时候可以借助一些宏定义让我们强行更便捷。下面介绍几个自己在写cpp时候常用的几个宏。(部分宏是C99新增的,要注意编译器支持不支持)

  • # ##
    #的效果简单说是把跟在后面的东西变成字符串。例子如下:
#define LOG(x) cout<<#x<<":"<<x<<endl;
int t = 2;
LOG(t);

实际输出:

t:2

##的效果简单说是对字符串做拼接。例子如下:

#define X(n) x##n
#define LOG(x) cout<<#x<<":"<<x<<endl;
int X(1) = 2;
LOG(x1);

实际输出:

x1:2
  • __FUNCTION__
    __FUNCTION__ 的效果简单说是取函数名。例子如下:
#define LOG(x) cout<<#x<<":"<<x<<endl;
void call_foo(){
    LOG(__FUNCTION__);
}
int main(){
    call_foo();
	return 0;
}

实际输出:

__FUNCTION__:call_foo
  • ... __VA_ARGS__
    ... __VA_ARGS__常配合使用,用于省略参数。例子如下:
#define LOG(...) printf("test %d and %s",__VA_ARGS__)
int t=2;
LOG(t,"hello");

实际输出:

test 2 and hello
posted @ 2019-06-03 15:57  zhangxianlong  阅读(727)  评论(0编辑  收藏  举报