none
C中宏定义的问题 RRS feed

  • 问题

  • 在面试中遇到的一个宏定义,有点没看明白,大概如下:

    typedef struct MANGER MA;
    #define func(x,y) {(x), fun, (y)}
    struct MANGER
    {
        int count, sum;
    };
    int fun(MA *p)
    {
        return p->count * p->sum;
    }

    #define func(x,y) {(x), fun, (y);}这个宏的传参方式不太明白,请高人指教。


    xiao



    • 已编辑 wh_xiao 2012年10月18日 23:10
    2012年10月18日 23:04

答案

  • 这个感觉问题很多啊

    typedef struct MANGER MA;

    这个typedef中的MANAGER还没有声明,应该编译是会报错的

    #define func(x,y) {(x), fun, (y)}

    这个简单,大括号就是为了在宏放到其他函数里不会有问题加的。

    (x),fun,(y)这是一个逗号运算,fun没有被执行,只是地址(就是一个无符号数);逗号运算返回最右边的y

    这东西没什么意义,多写多看程序就懂了


    0xDEADBEEF

    • 已标记为答案 wh_xiao 2012年10月21日 15:00
    2012年10月20日 15:54
    版主