我有一个主题,我试图用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)
并让它使用结构中的字段?
答案 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。