プログラミングはクールだ

2459 ワード

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
"); DEBUG1("I AM IN macro.c
"); DEBUG2("I AM IN macro.c
"); PrintColor1("I AM IN macro.c
"); PrintColor2("I AM IN macro.c
"); PrintColor3("I AM IN macro.c
"); PrintColor4("I AM IN macro.c
"); PrintColor5("I AM IN macro.c
"); PrintColor6("I AM IN macro.c
"); PrintColor7("I AM IN macro.c
"); return 0; }

出力結果: