zoukankan      html  css  js  c++  java
  • 使用__FILE__和__LINE__

    __FILE__和__LINE__对于我们调试程序非常有用,__FILE__定义为字符串表示,__LINE__定义为数字表示,编写一函数封装一下,用%s和%d格式化为字符串是相当地简单,

    但是如果定义一个宏来表示就有点麻烦了.借鉴《Windows核心编程》里的例子,先来一实验:

    #pragma message(__FILE__"("#__LINE__"):字符串!")

    可惜编译不过,编译器不接受"#"符号的这种用法,该符号貌似只能如下使用:

    #define  STR(x)  #x

    既然如此,那就接受吧,再实验一下:

    #pragma message(__FILE__"("STR(__LINE__)"):字符串!")

    编译通过了,但是输出时却直接输出的__LINE__符号,根本没转换成行号。原来STR(__LINE__)展开后为:#__LINE__,由于遇到了#号,则宏参数不再进行展开操作.

    应对STR宏的再次包装: #define TOSTRING(x) STR(x)

    这样TOSTRING(__LINE__)展开后为:STR(__LINE__),由于宏参数__LINE__也是个宏,因此继续对宏参数进行展开操作,故将__LINE__展开为数字形式。

    进行最后的实验:

    #pragma message(__FILE__"("TOSTRING(__LINE__)"):字符串!")

    成功了.

  • 相关阅读:
    Python Package(转)
    22. 分数化小数 decimal
    21. 子序列的和 subsequence
    20. 倒三角形 triangle
    19. 韩信点兵hanxin
    18. 水仙花数daffodil
    17. 数据统计2
    16. 数据统计
    15. 阶乘之和
    14. 近似计算
  • 原文地址:https://www.cnblogs.com/fangkm/p/1459554.html
Copyright © 2011-2022 走看看