#pragma once和#ifndef的作用和区别

两者共同的作用:防止库文件重复包含(#ifndef / #define / #endif)

方法一:在.h头文件开头加上#pragma once

//add.h
#pragma once
int ADD(x,y);

方法二:在.h头文件加上预定义指令

//add.h

#ifndef _ADD_H_/*第一次包含该头文件时,没有定义_ADD_H_,该预处理为真,则下面便定义_ADD_H_符号;如果想第二次包含该头文件时,				此时_ADD_H_已经定义,判断为假,则下面的语句都不进行预处理,即不再引入*/
#define _ADD_H_		
int add(x,y);	//h
...
#endif

两者的区别:

#pragma once

1.无法对一个头文件中的某一段代码作pargma once声明,只能针对文件

2.编译器保证:同一个文件不会被包含多次,“同一个文件”实际上指的是物理上的一个文件,而不是指内容相同的两个文件

3.因为不用宏定义,所以也没有宏名冲突的问题,不用为想宏名而烦恼

4.不支持跨平台

5.某些老版本的编译器不支持

#ifndef / #define / #endif

1.要定义宏名,宏名容易相同,不过宏名一般都是头文件的大写

2.受C/C++语言标准支持,不仅可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件或代码段不会被重复包含

3.编译大型项目时,这种方法的编译时间相对比较长

4.移植性比较好

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值