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

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

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

  1.  
    #include <stdio.h>
  2.  
    #include <stdlib.h>
  3.  
     
  4.  
    #define DEBUG1( fmt, arg ... ) \
  5.  
    do{printf("[DEBUG] " fmt , ##arg ); }while(0);
  6.  
    #define DEBUG2( fmt, arg ... ) \
  7.  
    do{printf("[%s: %s: line %d]" fmt ,\
  8.  
    __FILE__, __FUNCTION__, __LINE__, ##arg ); }while(0);
  9.  
     
  10.  
    #define PrintColor1( fmt, arg ... ) \
  11.  
    do{printf("\033[30m""[%s: %s: line %d]" fmt"\033[0m" ,\
  12.  
    __FILE__, __FUNCTION__, __LINE__, ##arg ); }while(0);
  13.  
     
  14.  
    #define PrintColor2( fmt, arg ... ) \
  15.  
    do{printf("\033[31m""[%s: %s: line %d]" fmt"\033[0m" ,\
  16.  
    __FILE__, __FUNCTION__, __LINE__, ##arg ); }while(0);
  17.  
     
  18.  
    #define PrintColor3( fmt, arg ... ) \
  19.  
    do{printf("\033[32m""[%s: %s: line %d]" fmt"\033[0m" ,\
  20.  
    __FILE__, __FUNCTION__, __LINE__, ##arg ); }while(0);
  21.  
     
  22.  
    #define PrintColor4( fmt, arg ... ) \
  23.  
    do{printf("\033[33m""[%s: %s: line %d]" fmt"\033[0m" ,\
  24.  
    __FILE__, __FUNCTION__, __LINE__, ##arg ); }while(0);
  25.  
     
  26.  
    #define PrintColor5( fmt, arg ... ) \
  27.  
    do{printf("\033[34m""[%s: %s: line %d]" fmt"\033[0m" ,\
  28.  
    __FILE__, __FUNCTION__, __LINE__, ##arg ); }while(0);
  29.  
     
  30.  
    #define PrintColor6( fmt, arg ... ) \
  31.  
    do{printf("\033[35m""[%s: %s: line %d]" fmt"\033[0m" ,\
  32.  
    __FILE__, __FUNCTION__, __LINE__, ##arg ); }while(0);
  33.  
     
  34.  
    #define PrintColor7( fmt, arg ... ) \
  35.  
    do{printf("\033[36m""[%s: %s: line %d]" fmt"\033[0m" ,\
  36.  
    __FILE__, __FUNCTION__, __LINE__, ##arg ); }while(0);
  37.  
     
  38.  
    int main()
  39.  
    {
  40.  
    printf("I AM IN macro.c\n");
  41.  
     
  42.  
    DEBUG1("I AM IN macro.c\n");
  43.  
    DEBUG2("I AM IN macro.c\n");
  44.  
     
  45.  
    PrintColor1("I AM IN macro.c\n");
  46.  
    PrintColor2("I AM IN macro.c\n");
  47.  
    PrintColor3("I AM IN macro.c\n");
  48.  
    PrintColor4("I AM IN macro.c\n");
  49.  
    PrintColor5("I AM IN macro.c\n");
  50.  
    PrintColor6("I AM IN macro.c\n");
  51.  
    PrintColor7("I AM IN macro.c\n");
  52.  
     
  53.  
    return 0;
  54.  
    }
注意: __FILE__  等,左右两边的下划线都分别是两条。
posted @ 2020-03-10 17:27  狂客  阅读(564)  评论(0编辑  收藏  举报