在C中使用宏将多个参数转换为一个

时间:2014-03-24 23:35:41

标签: macros

我是C的新手,我正在尝试做以下事情:

我有一个功能move(int x, int y) 我希望能够说move(CENTER)

我想说“#define CENTER x/2, y/2

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

  

move(CENTER)

您希望能够在名为move的变量上调用center吗?您可以使用结构:

struct point {
  int x;
  int y;
}

...

void move(struct point p) {
  // read from p.x and p.y
}

...

struct point center;
center.x = 20;
center.y = 20;
move(center);

我不确定你对#define CENTER x/2, y/2部分的意图是什么......你的意思是#define CENTER WIDTH/2, HEIGHT/2吗?您可以center.x = WIDTH / 2center.y = HEIGHT / 2

修改:如果您无法重新定义move,可以尝试使用

void my_move(struct point p) {
  move(p.x, p.y);
}