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

    成功了.

  • 相关阅读:
    判断pc端或移动端并跳转
    拖动验证码插件
    angularjs 简易模态框
    angularjs 设置全局变量的3种方法
    摄影之HDR
    CentOS上使用yum安装Apache
    CentOs6.5中安装和配置vsftp简明教程
    python 安装easy_install和pip
    linux mysql 操作命令
    .net源码分析
  • 原文地址:https://www.cnblogs.com/fangkm/p/1459554.html
Copyright © 2011-2022 走看看