测试代码如下:
#include <stdio.h>
struct Test
{
int a;
int b;
#define ST_DEFINE 10
};
void func()
{
int num = 0;
num = ST_DEFINE;
printf("1=%d\n",num);
}
#define ST_DEFINE 20
int main(int argc, char *argv[])
{
int num = 0;
num = ST_DEFINE;
func();
printf("%d\n",num);
return 0;
}
输出:
1=10
20
总结:
/*
1、宏定义在结构体里面,只是方便代码的阅读,一般这种情况,大部分是结构体里面有标志量,方便阅读。
2、在结构体里面定义一个宏,在结构体外面也可以定义同样的宏,如果两个宏的内容不一样,那么在使用的地方,哪个宏近就使用哪个。
宏就是替换,从上面开始,一直往后面替换。如果宏新定义了,那么就使用宏的新值继续替换。
*/