主要内容:#define宏大小、空结构体大小、柔性数组
一、#define宏大小
见例子
二、空结构体大小
根编译器有关
三、柔性数组
不常用,可看看
#include <stdio.h>
#define N 4
#define STR "abcd"
/* 宏定义测试*/
#define ewaece
#define sizeof
//下面这个宏定义编译错误,上面两个可以编译通过
//#define int
int main()
{
struct student{
}stu;
printf("N = %d\n", sizeof(N));
printf("num 5 memery = %d\n", sizeof(5));
printf("char 'd' = %d\n", sizeof('d'));
printf("STR = %d\n", sizeof(STR));
printf("a = %d\n",sizeof(stu)); // 在编译器gcc、mingw5下输出0,在vc++6.0中输出1(我使用的mingw5编译器),在vc++6.0中默认结构体最小大小为1字节(包含空结构体和只含一个char类型的结构体)
/*
柔性数组测试
可以参考《C语言深度解剖》
*/
printf("\n柔性数组测试\n");
typedef struct test{
int i;
int a[]; // 此数组前必须包含一个其它成员