[C++] #pragma once

看到一段代码使用了 #pragma once:

#if !defined(STRING_MANIPULATOR_H_INCLUDED)
#define STRING_MANIPULATOR_H_INCLUDED
#if _MSC_VER > 1000
    #pragma once
#endif // _MSC_VER > 1000
#endif // !defined(AFX_STRINGTOKENIZER_H__03F4D15A_A411_42B6_9F90_485B62939428__INCLUDED_)

#pragma once 目的和#ifndef#define#endif目的相同,防止头文件被重复包含。

#pragma once 是编译器选项, GCC3.4之前的版本不支持,而#ifndef受语言自身支持。

#pragma once 的缺点是,如果相同的文件分散在不同位置,编译器会以为它们是不同的文件。

使用#pragma once 的好处是,如果文件名改变,不需要作任何修改,但是如果使用#ifndef#define#endif 就要修改,造成维护的困难。绝大多数情况下, 使用#pragma once都能实现预期目的。

#ifndef MY_HEADER_HPP  // 如果文件名改变,也要修改MY_HEADER_HPP 
#define MY_HEADER_HPP
...
#endif

[1] https://stackoverflow.com/questions/787533/is-pragma-once-a-safe-include-guard

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值