C/C++_#pragma once和#ifndef #def #endif

在日常的工程项目中,我们为了使头文件只被编译一次,通常需要在头文件加入杂注来实现。

下面介绍两种常用杂注的区别:
#pragma once
此种方式由编译器保证,同一个文件(不是指内容相同的文件,而是指物理文件)不会被编译多次。此种方式的优点就是不用担心宏名冲突,缺点是如果头文件有多份拷贝,就无法保证不被重复包含。另外,此种方式兼容性不太好,一些老的编译器可能不支持。

#ifndef
#define
...
#endif

此种方式依赖于宏名字不能冲突。此种方式不仅能保证同一个文件不被包含多次,还能保证内容完全相同的两个文件不被同时包含。此种方式缺点也比较明显,不同文件的宏名相同,会导致编译器找不到声明。

猜你喜欢

转载自blog.csdn.net/sss_0916/article/details/83795809