[英]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
的訪問幾乎用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
這樣?
#define X(myarray,i) myarray[i].x[0]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.