#pragma once 与 #ifndef #define #endif各自的优缺点

本文介绍了C/C++中防止头文件被多次包含的两种方法:ifndef预处理指令和#pragma once编译器指令。ifndef方式需要自定义宏名,可能增加编译时间,但兼容性好,能防止内容相同文件的重复包含。#pragma once则不需要宏名,加快编译速度,但仅检查物理文件,不处理内容相同的文件。
摘要由CSDN通过智能技术生成

为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式。

方式一:

  1. 代码形式
//注意标识名是自己起的,但这两个必须相同,一般用头文件名的大写
#ifndef __A_H__    //如果未定义__A_H__,执行以下内容
#define __A_H__    //定义__A_H__
... ... // 声明、定义语句
#endif             //结束执行
  1. 优点
    #ifndef的方式受C/C++语言标准支持,兼容性好。它不光可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件(或者代码片段)不会被不小心同时包含。
  2. 缺点
    需要自己想一个标识名,可能会重复;编译器每次都需要打开头文件才能判定是否有重复定义,因此在编译大型项目时,ifndef会使得编译时间相对较长编译时间长。

方式二:

  1. 代码形式
#pragma once
... ... // 声明、定义语句
  1. 优点
    不必再费劲想个宏名了;大型项目的编译速度也因此提高了一些。
  2. 缺点
    同一个文件不会被包含多次。注意这里所说的“同一个文件”是指物理上的一个文件,而不是指内容相同的两个文件。你无法对一个头文件中的一段代码作pragma once声明,而只能针对文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值