c++踩坑大法好 宏定义 头文件
1,c++宏定义是干啥的?防止重复引用,如何防止重复引用?
//a.h //声明一个类,和其他声明 #include <iostream> class A{ public: static int a; static int b; }; //b.h //需要a.h的类,又还有些其他声明 #include "a.h" //main,cpp //既需要a.h,又需要b.h,所以只能把两个头文件都引用过来。 #include "a.h" #include "b.h" //报错,此处重复定义了,因为一共引用了3个文件: //1,a.h //2,b.h //3,a.h(b.h中引用的) int main{ xxx一堆代码 } 怎样修改才对? //a.h #ifndef hehe #define hehe #include <iostream> class A{ public: static int a; static int b; }; #endif //这样当第一次引入a.h的时候会声明class并且定义一个hehe变量,第二次走到 a.h的时候发现已经有了hehe了,就不会再重新声明hehe了
2,头文件里能写什么样的声明?
①变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。
②变量声明:用于向程序表明变量的类型和名字。
③定义也是声明:当定义变量时我们声明了它的类型和名字。
④extern关键字:通过使用extern关键字声明变量名而不定义它。
所以,h文件中原则上只能写类声明,函数声明,静态全局变量(const这种),外部变量(extern这种)