1.day10
1、perror()
原型:void perror(const char *s); 根据errno呈现错误信息
perror("malloc error");
malloc error: Cannot allocate memory
2、多文件编译
.c ---预处理(.i -E)---汇编(.s -S)---二进制(.o )---链接(可执行文件)
3、结构体对齐
1)32位操作系统,最大4个字节对齐。64位操作系统,最大8个字节对齐;
2)#pragma pack(n),强制对齐,比如4、8;
4、位域
1)赋值时不能超过该类型的承受范围;
unsigned char a:2; // 那么a只能存 0 1 2 3 这几个数字
a = 5 ; //错误
2)位域宽度为0的位域称为空域,其作用是:该次对齐空间剩余部分全部补0;
struct xx{
int b:1 ;
int :0 ; // 32位对齐,b用了1位,所以该处共有31个0
int c:3 ; // 新的对齐行
}
5、申请结构体变量的空间
typedef struct{
int x;
int y;
int z;
char c;
short d;
} uu_t;
uu_t *p = (uu_t *)malloc(sizeof(uu_t));
6、条件编译
#if defined(宏) || defined(宏)
代码
#endif
#define N(a,b) a+10+b
N(1,2)*10; // 1+10+2*10,错误
最标准的写法:
#define N(a,b) ((a)+10+(b))