Работая над кодом, я видел это:
#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
таким образом?