#pragma once 与 #ifndef #define #endif 的不同
#ifndef #define #endif :
是宏定义的一种,实际上确切的说,这应该是预处理功能三种(宏定义、文件包含、条件编译)中的一种----条件编译。
通过宏定义避免文件多次编译,依赖于宏名字不能冲突。他读到#ifndef之后,如果已经定义过了,就会跳过这一大片,一直到#endif为止。build时间长,因为每次compiler都会打开这个文件,然后搜索全文件一遍。
在所有支持C++语言的编译器上都是有效的。
#pragma once:
而如果碰到了#pragma once,他就会立刻停止,build时间短;
不必再费劲想个宏名了,当然也就不会出现宏名碰撞引发的奇怪问题。
缺点就是如果某个头文件有多份拷贝,本方法不能保证他们不被重复包含。
在MS平台编译系统和大部分编译系统上能用,移植型差。
本文来自博客园,作者:꧁执笔小白꧂,转载请注明原文链接:https://www.cnblogs.com/qq2806933146xiaobai/p/12201358.html
分类:
C#
, 其他开发语言-C/C++
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下