代码之家  ›  专栏  ›  技术社区  ›  Manolete

带有预处理器指令的指针

  •  0
  • Manolete  · 技术社区  · 8 年前

    在编写代码时我看到了:

    #define X(i)        ((array[i]).x[0])
    #define Y(i)        ((array[i]).y[0])
    
    typedef struct {
      int x[2];
      int y[2];
    } coord_t;
    
    coord_t* array = malloc(sizeof(coord_t)* 10);
    int myX = X(5);
    

    array 几乎是硬编码的 X Y

    #define X(myarray,i) myarray[i].x[0]
    

    哪里 myarray 可能是任何人 coord_t 指针:

    coord_t* a = malloc(sizeof(coord_t)* 4);
    coord_t* b = malloc(sizeof(coord_t)* 12);
    
    int myX = X(a,1);
    int myotherX = X(b,6);
    

    我已经这样做了,它编译没有任何错误,但我没有得到相同的结果。我的问题是,我可以吗 #define X

    1 回复  |  直到 8 年前
        1
  •  -1
  •   Manolete    7 年前
    #define X(myarray,i) myarray[i].x[0]