#ifndef #define 中的头文件名为什么是__xxx_h

这样定义是为了避免重复定义。重复声明可以,但是重复定义是不可以的。

重复声明只要名称完全相同即可。但是重复定义会出现编译错误的,即使同名也不可以。

多次包含可能会引来重复定义。比如a.h中包含了b.h和c.h,而c.h包含了b.h,那么编译

a.h时,b.h被编译了2遍。我们熟知b.h头文件中有FILE类型的定义,于是FILE被定义了2遍

在b.h头文件中用

#ifndef   __b_h

#define  __b_h

//...头文件体

#endif

包含住头文件体的内容,在第一次包含__b_h时,__b_h未定义,此时定义__b_h,在第二次包含时,

__b_h已定义,#ifndef   __b_h为false,头文件体

#define  __b_h

//...头文件体

#endif

之间的内容会被丢弃。因此避免了重复包含头文件体的内容而重复定义。

你可能感兴趣的:(嵌入式编程)