日常使用的C语言宏帮助打log
日常使用的C语言宏帮助打log
项目陷入僵局,写个blog放松一下。
cpp在debug或者打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


                
            
        
浙公网安备 33010602011771号