在C++的头文件里,通常通过 #pragma once与#ifndef两种防止头文件二次编译。
有的人将重复编译,重复包含与重复定义弄混,比如:定义一个类,在实例化它之前并不产生内存开销;这与基本类型有所区别。
明明在头文件使用了#pragma once;#ifndef...#define...#endif,为什么在头文件定义了一个全局变量,还会出现重复定义的错误,为什么头文件里的类的定义却不会报错?
首先:
#pragma once;#ifndef...#define...#endif这个只能解决重复包含,防止该头文件在一个.cpp文件里二次包含或者二次编译,但无法解决重复定义的
重复包含是编译期间的------------------------------------------------------
重复定义是链接期间的------------------------------------------------------
解决头文件相互包含的问题---超前引用:是解决包含了一次不