gcc 一些常规宏,有助手帮助调试

            关于GCC 调试的时候, 有时候为了便于快速定位所要打印的调试信息, 可以方便地调用提供的一些宏.
            __FILE__     调试信息所在的文件
            __LINE__     调试信息所在的行
            __DATE__     调试信息打印日期
            __TIME__     调试信息打印的时间
            __FUNC__     调试信息所在的函数

            常常可以看到很多开源方案中有这类应用:
            #define DEBUG_PRINT(format,...)  fprintf(stderr,"[DEBUG: ][Filename: %s][LINE: %d]  "format, ##__VA_ARGS__)

            对了,  关于   #, ##, ##__VA_ARGS__ 应用如下 

                           1. #define P(x) printf(#x "value is: %d", x)   //起替换作用

             int main(void)
             {
                  int y = 10;

                 P(y);
           }

        打印出:  y value is 10;


                    2.  #define P(n)   x##n 
                 int main(void)
                 {
                                int P(3)  = 10;  //等价于 int x3 = 10;

                        printf("x3  = %d\n", x3);
               }

    会打印出 10;

 3. ##__VA_ARGS__    可变参数替换

    #define DEBUG_PRINT(format,...)  fprintf(stderr,format, ##__VA_ARGS__)
     int main(void)
     {
        DEBUG_PRINT("hello mark\n");
   }    

 C99编码器 会自动检查参数个数,若没有,会自动去掉前面的 逗号。   

上述一些特性 仅GCC 支持吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值