zoukankan      html  css  js  c++  java
  • google-glog 开源库分析(四):glog宏技巧

    在核心结构之外,google-glog还通过宏技巧提供统一简洁的使用接口。
    同时,通过命名空间的使用尽可能的减少名字冲突,提供一个简介的日志库。

    宏助手

    • 通过宏提供一个统一的简洁的日志输出接口
      • 简单的使用如LOG(INFO),LOG(ERROR)等日志输出接口
    • 通过宏提供丰富的日志输出扩展功能
      • 提供了IF,CHECK等助手宏来简化代码

    编程技巧

    • 命名空间的使用
      • 因为是作为库使用,所以glog中使用了命名空间类避免名字冲突
      • 通过google命名空间提供glog库的接口空间,内部实现则进一步封装到嵌套命名空间中
    • 宏技巧:分流
      • 通过DEBUG宏可将日志输出定位到LogMessage中还是什么也不输出的NullStream中
    • 宏技巧:隐藏
      • 日志输出核心是通过LogMessage等类实现,同时通过宏提供了丰富的接口如条件日志,CHECK日志等
    • 宏技巧:清洁
      • 在使用宏过程中,会在使用完成后进行#undef操作来保证库的宏不会干扰到使用库的程序
    • 宏技巧:断言
      • 在mutex.h中,通过定义#define MutexLock(x) ...来保证同步锁不会出现MutexLock *lock=new MutexLock(&mu)之类错误
    • 宏技巧:技巧
      • 1.在#if条件中使用# error,there is ... 直接输出错误消息的宏可在编译期间就给出错误提示
      • 2.在宏定义中使用do{...}while(0)来保证宏内容作为一个整体,避免出现宏展开时的问题:
        • 如#define call() a();b(),在调用if(1<0) call()时扩展成if(1<0) a(); b()后b()总是会被调用

    小结

    以上只是我参考了网上资料及阅读源代码时的总结,还没在实际项目中应用。
    通过阅读源代码,也是一种享受。

  • 相关阅读:
    Win32的开发过程
    Win32的开发过程
    内存模式
    在DOS下生成一个可执行文件一般步骤
    内存模式
    内存模式
    静态链接
    在DOS下生成一个可执行文件一般步骤
    备忘录模式(存档模式)
    建造者模式
  • 原文地址:https://www.cnblogs.com/davidyang2415/p/3861120.html
Copyright © 2011-2022 走看看