跳转至

约 90 个字 8 行代码 预计阅读时间不到 1 分钟

常用的宏:

  • __FILE__ 文件名
  • __LINE__ 行号
  • __FUNSIG__ 函数签名(MSVC)
  • __PRETTY_FUNCTION__ 函数签名(Clang/gcc)
  • __func__ 函数名

宏函数

  • 打印日志
    #define LOG(_logInfo, _logLevel) logWrite(_logInfo, _logLevel, __FILE__, __LINE__);
    
    enum class LogLevel {
        DEBUG, 
        INFO,
        ERROR,
        FATAL
    };
    
    void logWrite(string logInfo, LogLevel logLevel, string fileName, int line){
        ... ...
    }
    
    int main(){
    
    ... ...
    LOG("test infomation", LogLevel::DEBUG);
    ... ...
    
    }
    
    此处必须使用宏定义函数LOG的原因是, __LINE__是该宏所在的行的行数, 若把__LINE__写在logWrite函数里, 则输出的永远是logWrite函数体内有__LINE__所在的行号, 而不是logWrite函数调用处的行号.

评论