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

标签 c struct c-preprocessor

我想用 C 来掌握一个主题,那就是定义。

如果我有一个结构设置为:

struct grids {

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

};

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

 MAX(x,y)

结构网格 grid1 和 grid2 为:

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

是否可以创建如下定义:

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

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

最佳答案

我不确定这是你的意思:

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

关于C 是否可以使用结构变量进行定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26090825/

相关文章:

c - 在c中构建一棵二叉树

c++ - 输入值到结构数组+打印出来

c - GTK+ : what does the gtk_ui_manager_add_ui_from_resource function do?

c - 所有条件都相等的 If 语句

c++ - 使用结构方法返回时出错 - C++

c++ - 如何在dll中的要导出的类中包含结构?

c# 预处理器指令作用域

c - 使用 X 列表和预处理器指令在编译时生成可配置的 C 代码

c++ - Visual C++ 中的预处理器工具 __COUNTER__

c - 我应该如何限制 fscanf 解释的字符数?