c - 带有预处理器指令的指针

标签 c c-preprocessor

在编写代码时我见过这样的:

#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]

关于c - 带有预处理器指令的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51199580/

相关文章:

c - 有没有办法将 C 代码转换为 Ruby?

c - 输入的数字大于 int 类型允许的数字

C++ 在一个参数中传递多个参数

我可以使用标记粘贴来处理编译时命名吗?

c - 源文件看不到其他 header 的定义

c - 从枚举中删除一个值而不更改其他值

java - 简单 HelloWorld 程序的 JNI : Getting java. lang.UnsatisfiedLinkError

c - 在 C 中使用 fork() 时出现段错误

c - 在试图终止父进程时,子进程仍在运行

c - 通过预处理器指令自扩展代码