宏定义

作者: 菜菜子MJ | 来源:发表于2021-04-13 15:20 被阅读0次

    # ##

    把参数转换为字符数组

    把参数连接在一起

    注意:当宏参数是另一个宏的时候,需要注意的是宏定义例有用“#”或“##”的地方宏参数是不会再展开。即只有当前的宏生效,参数里的宏不会生效。解决的办法就是增加新的宏定义做一个转换。

    #define PRINT_CSTR(no) printf("cstr" #no " addr:\t%p\n",cstr##no)
    stringstream ss("012345678901234567890123456789012345678901234567890123456789");
    const char* cstr1 = ss.str().c_str();
    PRINT_CSTR(1);
    // 输出结果
    // cstr1 addr:     0x100200e4
    
    #define _TEST(a) printf("test " #a);
    #define TEST(a) _TEST(a)
    TEST(TEST(c))
    // 输出结果
    // test printf("test " "c");
    

    相关文章

      网友评论

          本文标题:宏定义

          本文链接:https://www.haomeiwen.com/subject/niqclltx.html