#ifndef、#define、#endif三个语句联合使用 是干嘛用的
想必很多人都看过“头文件中的 #ifndef、#define、#endif ”这三句联合使用了吧?其实这段代码是C/C++中的条件编译指令,用于防止头文件的重复包含。
优化后的代码:
#ifndef HEADER_H
#define HEADER_H
// 在这里添加头文件的内容
#endif // HEADER_H
当头文件被多次包含时,#ifndef和#define指令会检查是否已经定义了HEADER_H宏,如果没有定义,则执行#define指令定义宏,并包含头文件的内容。如果已经定义了HEADER_H宏,则跳过头文件的内容,避免了重复包含的问题。这样可以提高代码的执行性能,同时保持代码的简洁性。
这段代码是一个C/C++头文件的常见模板。它的含义如下:
#ifndef HEADER_H
// 这里头文件内容
#define HEADER_H
#endif
#ifndef 和 #endif 是条件编译指令,用于避免头文件的重复包含。当编译器第一次遇到这个头文件时,它会检查是否已经定义了宏 HEADER_H。如果没有定义,则执行 #ifndef 和 #endif 之间的代码;如果已经定义了,则跳过这部分代码,避免重复包含。
#define HEADER_H 是一个宏定义,用于标识该头文件的内容。当这个头文件被多次包含时,HEADER_H 宏会被替换为空,从而避免了重复定义的问题。
#ifndef HEADER_H 和 #endif 之间的代码块是头文件的具体实现部分,可以包含函数声明、变量定义、结构体定义等。
这种写法的好处是,当多个源文件需要使用同一个头文件时,可以避免重复包含导致的编译错误,并且可以确保头文件的内容只被包含一次,提高了代码的执行效率。
例如在Motor1.h文件中,已经声明了
#ifndef HEADER_H
// 这里头文件内容
#define HEADER_H
#endif
假如我有两个电机要使用同样的函数,那么我可以通过复制粘贴方式,复制出第二个Motor2.h
上面的所说的东西就不会发生冲突,而报警