C++中#pragma once和#ifndef用法

宏实现方式 #pragma once #ifndef
作用 为了避免同一个头文件被包含(include)多次
使用方式

#pragmaonce

... ... // 声明、定义语句

#ifndef __SOMEFILE_H__

#define __SOMEFILE_H__

... ... // 声明、定义语句

#endif

特点

同一个文件不会被包含多次

(注意:这里所说的“同一个文件”是指物理上的一个文件,而不是指内容相同的两个文件)

1、保证同一个文件不会被包含多次

2、保证内容完全相同的两个文件(或者代码片段)不会被不小心同时包含

缺点

1、无法对一个头文件中的一段代码作pragma once声明,而只能针对文件

2、如果某个头文件有多份拷贝,本方法不能保证他们不被重复包含。当然,相比宏名冲突引发的“找不到声明”的问题,这种重复包含很容易被发现并修正

1、如果不同头文件中的宏名不小心“撞车”,可能就会导致你看到头文件明明存在,但编译器却硬说找不到声明的状况

2、由于编译器每次都需要打开头文件才能判定是否有重复定义,因此在编译大型项目时,ifndef会使得编译时间相对较长,因此一些编译器逐渐开始支持#pragma once的方式

优点

1、不必再担心宏名冲突了,当然也就不会出现宏名冲突引发的奇怪问题

2、大型项目的编译速度也因此提高了一些

3、兼容性可能不够好

受C/C++语言标准的支持,不受编译器的任何限制

发布了21 篇原创文章 · 获赞 19 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览