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__)"):字符串!")

    成功了.

  • 相关阅读:
    Codeforces Round #717 (Div. 2)
    Codeforces Round #716 (Div. 2)
    atCoder Regular Contest 117
    Codeforces Round #715 (Div. 2)
    牛客挑战赛49
    从零开始搭建webpack应用
    扫盲:npm
    MYSQL安装
    Int和integer区别
    关于JDK配置以及DOS窗口执行指令
  • 原文地址:https://www.cnblogs.com/fangkm/p/1459554.html
Copyright © 2011-2022 走看看