初夏小谈:C/C++防止头文件被重复包含的两种方法及区别

防止头文件被重复包含的两种方式

1.条件编译的宏

2.#pragma once

先来说说第一种

#ifndef __HEADNAME__H__
#define __HEADNAME__H__

//...
//头文件

#endif

C/C++标准支持#ifndef的方式,当头文件第一次被包含时正常处理  _HEADNAME__H__ 被定为1,当再次包含相同头文件时就会被忽略,但预处理时仍会将头文件读入加长编译时间。_HEADNAME_H__会被改为包含的头文件名。以防冲突。它不但可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被同时包含。。假如宏名相同会引发冲突,找不到声明的问题。

再说说第二种:

//#pragma once

//...
//头文件

#pragma once 也是防止头文件被重复包含,它所指的文件时物理上的一个文件,而不是内容相同的两个文件。但有文件被多份拷贝,不能保证不被重复包含。它受编译器的限制。有的不支持。

二者区别

宏定义:有先天优势,和标准与生俱来 ,可移植性强。但多要考虑宏名。

#pragma once  头文件只被打开一次,运行效率较高,不用考虑宏名。但受编译器的限制。

                                                                                                                                                                            珍&源码

猜你喜欢

转载自blog.csdn.net/IT_xiaoQ/article/details/84036270
今日推荐