C语言使用宏来控制结构体里的成员定义

这里只是记录下C语言里使用宏来控制结构体里成员定义。
在阅读linux内核源码时,会发现很多结构体里都有各种宏开关,来控制是否定义某个成员变量。
在这里插入图片描述
下面自己写个简单的程序验证下,

#include <stdio.h>

#define _SWITCH_

struct TestStruct {
	int a;
#ifdef _SWITCH_ // 宏开关
	int b;
#endif
	int c;
};


int main(void)
{
	struct TestStruct obj = {
      .a = 100,
#ifdef _SWITCH_ // 宏开关
	  .b = 200,
#endif
      .c = 300
    };



	printf("a = %d\n", obj.a);
#ifdef _SWITCH_ // 宏开关
	printf("b = %d\n", obj.b);
#endif
	printf("c = %d\n", obj.c);

	return 0;
}

输出如下,
在这里插入图片描述
当我们把第三行的#define _SWITCH_注释掉,再次编译运行,得到输出如下,
在这里插入图片描述
说明这个宏开关起作用了。
感谢阅读。

©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页