#pramga once 和 #ifndef 的区别:

#ifnodef 依赖于宏名字不能冲突;缺点就是,万一不同的头文件的宏名字不小心撞车,会让编译器找不到声明;

#pramga once 由编译器提供保证;根据物理上是否是同一个文件;好处是我不需要想宏名;
缺点上是拷贝一下,就被重复包含了;

因为编译器每次都要打开头文件来判断这个头文件是否被包含,导致编译时间增加,所以越来越多的编译器现在选择使用#pramga once(微软的),大大提高了效率;但是ifndef支持任何c、C++的编译器,因为他是c++标准里的一部分;所以移植性高;

你可能感兴趣的:(C++,C语言)