[英]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.