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

#pragma once和#ifndef的作用和区别,第1张

两者共同的作用:防止库文件重复包含(#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.移植性比较好

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/674686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存