sylar学习-宏的使用

2021/12/22 23:50:47

本文主要是介绍sylar学习-宏的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

const char* LogLevel:: Tostring(LogLevel::Level level) {
    switch(level) {
#define XX(name) \
    case LogLevel::name: \
        return #name; \
        break;
    
    XX(DEBUG);
    XX(INFO);
    XX(WARN);
    XX(ERROR);
    XX(FATAL);
#undef XX
    default:
        return "UNKNOWN";
    }
    return "UNKNOWN";
}

在学习宏的时候一开始并不理解这样的用法,主要是没理解宏其实是文本替换,如果将上面变形为:

const char* LogLevel::ToString(LogLevel::Level level) {
    switch(level) {
#define XX(name) case LogLevel::name: return #name; break;

    XX(DEBUG);
    XX(INFO);
    XX(WARN);
    XX(ERROR);
    XX(FATAL);
#undef XX
    default:
        return "UNKNOW";
    }
    return "UNKNOW";
}

可见清晰了很多,XX()省去了大段的重复编写,XX(DEBUG)...就是直接进行替换,undef结束宏定义。另外指出:#@是单引号,比如#@S结果是'S',   #是双引号,比如#string,结果是"string",     ##是拼接前后,比如123##456,结果是123456.



这篇关于sylar学习-宏的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程