当前位置: 首页 > news >正文

[Windows编程] #pragma once 和#ifndef ... #define ... #endif 比较

C++中防止头文件被多次include 的常见方式有:

1) 用#ifndef ... #define ... #endif 宏

#ifndef __MYHEADER_H__
#define __MYHEADER_H__

// Here is my class ...

#endif

2) 用 #pragma once

#pragma once

// Here is my class ...

建议使用 #pragma once ,原因:

1) 代码简洁,维护性比较好。 #pragma once 显然比 #ifndef ... 要简短许多,而且避免了__MYHEADER_H__ 重定义 或者 #endif 包含范围错误的情况

2) 编译速度快。 使用 #ifndef 的话,编译器每次看到#include这个文件都需要读入文件,解析代码。 而使用#pragma once 编译器根本不会重复打开文件, 大大提高了效率。

以上两点在大型C++工程中表现得尤为突出。

注: #pragma once 不是国际标准, 只是微软C++ 的一个功能, 但现在多数主流C++编译器也都实现了这个功能。

>> 原创文章的版权属于作者,转载请注明出处和作者信息(http://blog.csdn.net/WinGeek/), 谢谢。 <<

相关文章:

  • LeetCode -- Evaluate Reverse Polish Notation
  • [Web开发] 微软的 PHP+IIS+WinServer 开发培训资料/示例代码
  • LeetCode -- Jump Game
  • 好,是没有尽头的
  • LeetCode -- Palindrome Partitioning
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • LeetCode -- Pow(x, n)
  • (ZT)出版业改革:该死的死,该生的生
  • LeetCode -- Rectangle Area
  • 推荐一个做“台”的思路
  • LeetCode -- Reverse Nodes in k-Group
  • LeetCode -- Binary Search Tree Iterator
  • 使用pgRouting进行路径分析
  • LeetCode -- Combination Sum III
  • 怎样使用深度纹理
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 345-反转字符串中的元音字母
  • Android Volley源码解析
  • Asm.js的简单介绍
  • CSS相对定位
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Fastjson的基本使用方法大全
  • Java精华积累:初学者都应该搞懂的问题
  • js中的正则表达式入门
  • magento2项目上线注意事项
  • Rancher-k8s加速安装文档
  • Redis 中的布隆过滤器
  • Solarized Scheme
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • vue-router的history模式发布配置
  • WePY 在小程序性能调优上做出的探究
  • 闭包,sync使用细节
  • 关于字符编码你应该知道的事情
  • 基于web的全景—— Pannellum小试
  • 记录:CentOS7.2配置LNMP环境记录
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 前端面试之CSS3新特性
  • 正则与JS中的正则
  • MPAndroidChart 教程:Y轴 YAxis
  • PostgreSQL之连接数修改
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (离散数学)逻辑连接词
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (算法)Travel Information Center
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)Linux下编译安装log4cxx
  • (转载)CentOS查看系统信息|CentOS查看命令
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET程序员迈向卓越的必由之路
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @Autowired @Resource @Qualifier的区别