簡體   English   中英

帶有預處理指令的指針

[英]Pointers with preprocessor directives

在編寫代碼時,我已經看到了:

#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的訪問幾乎用XY預處理程序指令進行了硬編碼。 我想做的是將指針傳遞給預處理器指令,例如:

#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這樣?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM