C/C++ #pragma once(与#ifndef比较)防止头文件被重复包含

在C和C++编程语言中,#pragma once是一个非标准但是被广泛支持的前置处理符号,会让所在的文件在一个单独的编译中只被包含一次。它会加快编译速度,编译器会自动比对文件名称而不需要在头文件使用#ifndef和#endif。

#pragma once
#ifndef __SOMEFILE_H__
#define __SOMEFILE_H__
//...声明语句
#endif

#pragma once 和 #ifndef 都是为了防止一个文件被重复包含。
区别在于 #ifndef是C/C++语言标准支持,不受编译器的限制。而#pragme once是由编译器提供保证:保证同一个物理文件不会被包含多次。
使用#ifndef编译器每次需要打开文件才能判断,所以效率相对低。它依赖于宏名,如果宏名起了冲突,就可能出现错误(宏定义冲突)。
使用#pragma once则是编译器自动对比,是由编译器提供支持,所以它的兼容性需要考虑。

为什么要防止被重复包含?
主要是为了防止引起重定义的错误(函数,变量,类等)。在C++语法中,每个符号只能被定义一次(可以声明多次)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值