http://blog.sina.com.cn/s/blog_966f8e8501010wlv.html
2012
自定义头文件通常放在使用该头文件的源文件所在的目录中,并使用#include "MyHead.h"来包含。
头文件是不编译的,因为C语言编译过程之前有个预编译过程。在这个过程中用头文件中的内容替换源文件中“#include”命令,所以在编译器看来,没有头文件,只有源文件。预编译过程还包括条件编译。
头文件为了防止被重复包含,通常的格式是:
#ifndef _MYHEAD_H_
#define _MYHEAD_H_
(这里是头文件的内容)
#endif
预处理:预编译处理是指在编译系统对文件进行编译---词法分析、语法分析、代码生成及优化之前,对一些特殊的编译语句先进行处理,然后将处理结果与源程序一起编译,生成目标文件。
条件编译:条件编译指令将决定那些代码被编译,而哪些是不被编译的。可以根据表达式的值或者某个特定的宏是否被定义来确定编译条件。
#endif用于结束条件编译,编译时与前面最近的#if #ifdef或#ifndef作为一对,经常一起使用,编译两者之间的部分程序段。
下面是一个头文件memdev.h的例子
#ifndef _MEMDEV_H_
#define _MEMDEV_H_
#include<linux/ioctl.h>
#ifndef MEMDEV_MAJOR
#define MEMDEV_MAJOR 0
#endif
#ifndef MEMDEV_NR_DEVS
#define MEMDEV_NR_DEVS 2
#endif
#ifndef MEMDEV_SIZE
#define MEMDEV_SIZE 4096
#endif
struct mem_dev
{
char *data;
unsigned long size;
};
#define MEMDEV_IOC_MAGIC 'k'
#define MEMDEV_IOCPRINT_IO(MEMDEV_IOC_MAGIC,1)
#define MEMDEV_IOCGETDATA_IOR(MEMDEV_IOC_MAGIC,2,int)
#define MEMDEV_IOCSETDATA_IOW(MEMDEV_IOC_MAGIC,3,int)
#define MEMDEV_IOC_MAXNR 3
#endif
联系客服