网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

C宏定义中的‘#’和‘##’


/*
#是把宏参数变为一个字符串,##是把两个宏参数连接在一起。

*/

#include 
#define f(a,b) a##b
#define g(a)  #a
#define h(a) g(a)

int main()
{   
    f(1, 2);//宏展开: 12;
    g(3);   //宏展开: "3"

    /*
    展开宏函数的规则:
    在展开当前宏函数时,如果形参有#或##则不进行宏参数的展开,
    否则先展开宏参数,再展开当前宏。
    */
    printf("%s\n", h(f(1, 2)));//12
    printf("%s\n", g(f(1, 2)));//f(1,2) ,不进行宏参数的展开

    system("pause");
    return 0;
}

综合以上:
第一行h(f(1,2)),由于h(a)非#或者##所以先展开其参数f(1,2),即12,所以变成h(12),然后再宏替换为g(12),再次替换为12。
第二行g(f(1,2)),宏g(a)带有#,所以里面的f(1,2)不展开,所以变成f(1,2)

10年积累的网站设计制作、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先建设网站后付款的网站建设流程,更有尼金平免费网站建设让你可以放心的选择与我们合作。


当前名称:C宏定义中的‘#’和‘##’
标题路径:http://bjjierui.cn/article/godocd.html

其他资讯