#include
用<>来包含库中头文件,如stdio.h
用“”来包含文件夹下自己定义的头文件,如果没有找到,就去找库中头文件
“”比<>的查找范围大,但是更费时
头文件的使用可能会重复,造成代码冗余,如:
一个同事写了test1.h,其中包含了stdio.h,另一个同事写了test2.h,其中也包含stdio.h,自己用同事的代码时,把test1.h、test2.h、stdio.h都包含了,这里stdio.h就被多重复了两遍
解决:
#ifdef __TEST_H__
#define __TEST_H__
//需要使用的头文件
#endif
如果没有定义过,就定义一个,再使用头文件,如果被定义过了,就不再使用这个头文件了
或者:#pragma once//此法较常见
百度笔试题:编写宏,计算结构体中某变量相对于首地址的偏移
#include<stdio.h>
struct S
{
char c1;
int a;
char c2;
};
#define OFFSETOF(struct_name,member_name) (int)&(((struct_name*)0)->member_name)
int main()
{
printf("%d\n",OFFSETOF(struct S,c1));
printf("%d\n",OFFSETOF(struct S,a));
printf("%d\n",OFFSETOF(struct S,c2));
return 0;
}