C是否可以使用struct变量进行定义?

时间:2014-09-28 23:58:44

标签: c struct c-preprocessor

我有一个主题,我试图用C来掌握,这就是定义。

如果我有一个结构设置:

struct grids {

   int x;
   int y;
   int endX;
   int endY;

};

以后我想稍后执行操作,例如:

 MAX(x,y)

使用struct grid grid1和grid2 as:

 MAX(grid1 -> x, grid2 -> x)

是否可以创建如下的定义:

#define MAX(x,y)((x > y) ? x : y)

并让它使用结构中的字段?

1 个答案:

答案 0 :(得分:2)

我不确定这是你的意思:

#include <stdio.h>
#define MAX(a) ((a.x > a.y) ? a.x : a.y)
#define MAX_X(a,b)((a.x > b.x) ? a.x : b.x)
#define MAX_Y(a,b)((a.y > b.y) ? a.y : b.y)

struct grids {
  int x;
  int y;
  int endX;
  int endY;
};

int main(void){
  struct grids a;
  a.x = 3;
  a.y = 4;
  struct grids b;
  b.x = 4;
  b.y = 3;
  printf("MAX(a): %d\n",MAX(a)); // prints 4
  printf("MAX_X(a,b): %d\n",MAX_X(a,b)); // prints 4
  printf("MAX_Y(a,b): %d\n",MAX_Y(a,b)); // prints 4   
}

它打印4。