.h头文件存在的意义就是封装,可以方便多个.c源文件使用,但要防止.h头文件被同一个.c源文件多次包含。
例如,
io.h文件
#ifndef _IO_H_
#define _IO_H_
#define HOLENUM 15
int HoleTemp;
void Get_Temp(unsigned char HoleID);
#endif
uart.h文件
#ifndef _UART_H_
#define _UART_H_
#include <io.h>
#endif
main.c文件
#include<io.h>
#include<usb.h>
void AutoCtrlTemp(void)
{
//...
}
main()
{
AutoCtrlTemp();
}
其中,在.h中定义的这个#ifndef ...#define...#endif的作用域是多大呢?/整个project。
usb.h包含了io.h,main.c包含了usb.h又包含了io.h,明显的重复包含了io.h,此时如果不加#ifdef,会出现大量的重复定义错误。