Linux 利用宏和printf定义特殊的输出(转载)

在linux下,可以使用一些宏,加上自定义格式输出,让输出更易于调试:

排版出来可能有些乱,注意do{ }while(0);是在一行里就可以了。

#include <stdio.h>
#include <stdlib.h>

#define DEBUG1( fmt,  arg  ... )  \
	do{printf("[DEBUG] " fmt ,  ##arg );  }while(0);
#define DEBUG2( fmt,  arg  ... ) \
	do{printf("[%s: %s: line %d]" fmt ,\
		__FILE__, __FUNCTION__, __LINE__,  ##arg );  }while(0);

#define PrintColor1( fmt,  arg  ... )	\
	do{printf("\033[30m""[%s: %s: line %d]" fmt"\033[0m" ,\
		__FILE__, __FUNCTION__, __LINE__,  ##arg );  }while(0);
	
#define PrintColor2( fmt,  arg  ... )	\
	do{printf("\033[31m""[%s: %s: line %d]" fmt"\033[0m" ,\
		__FILE__, __FUNCTION__, __LINE__,  ##arg );  }while(0);
	
#define PrintColor3( fmt,  arg  ... )	\
	do{printf("\033[32m""[%s: %s: line %d]" fmt"\033[0m" ,\
		__FILE__, __FUNCTION__, __LINE__,  ##arg );  }while(0);
	
#define PrintColor4( fmt,  arg  ... )	\
	do{printf("\033[33m""[%s: %s: line %d]" fmt"\033[0m" ,\
		__FILE__, __FUNCTION__, __LINE__,  ##arg );  }while(0);
	
#define PrintColor5( fmt,  arg  ... )	\
	do{printf("\033[34m""[%s: %s: line %d]" fmt"\033[0m" ,\
		__FILE__, __FUNCTION__, __LINE__,  ##arg );  }while(0);
	
#define PrintColor6( fmt,  arg  ... )	\
	do{printf("\033[35m""[%s: %s: line %d]" fmt"\033[0m" ,\
		__FILE__, __FUNCTION__, __LINE__,  ##arg );  }while(0);
	
#define PrintColor7( fmt,  arg  ... )	 \
	do{printf("\033[36m""[%s: %s: line %d]" fmt"\033[0m" ,\
		__FILE__, __FUNCTION__, __LINE__,  ##arg );  }while(0);

int main()
{
	printf("I AM IN macro.c\n");

	DEBUG1("I AM IN macro.c\n");
	DEBUG2("I AM IN macro.c\n");

	PrintColor1("I AM IN macro.c\n");
	PrintColor2("I AM IN macro.c\n");
	PrintColor3("I AM IN macro.c\n");	
	PrintColor4("I AM IN macro.c\n");
	PrintColor5("I AM IN macro.c\n");	
	PrintColor6("I AM IN macro.c\n");
	PrintColor7("I AM IN macro.c\n");

	return 0;
}
注意: __FILE__  等,左右两边的下划线都分别是两条。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值