1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > ifndef和pragma once的作用与区别

ifndef和pragma once的作用与区别

时间:2020-11-01 15:24:29

相关推荐

ifndef和pragma once的作用与区别

文章目录

ifndefpragma once区别

ifndef

ifndef是c/c++语言中支持的宏定义。 格式大体如下:

#ifndef __X__#define __X__ /*...*/#endif

“ifndef”是“if not define” 的缩写。 作用就和字面意思一样。如果没有定义 则定义。

这样通过宏定义来避免一个文件被多次编译。

但是使用宏定义会有宏名冲突的问题,例如类似这样的

#define X 3#define X 4

这里对X的宏定义重复进行,这样是会编译出错的。但是如果使用ifndef会导致有一个文件中相同名称的部分被忽略。

pragma once

“pragma once” 是微软编译器支持的,意思是对文件只编译一次。使用只需要在文件头处加一句即可。

#pragma once

当然因为是编译器提供支持的,这就意味着如果编译器不同就有可能出现报错。当换编译器或换平台时我们就需要修改代码。

区别

“ifndef”是c/c++提供的语言特性,“pragma”是编译提供支持。所以“ifndef”拥有更好的跨平台移植性。

“pragma”拥有更高的效率,当编译器遇到“ifndef”时,如果发现这个已经被编译,会一直向下忽略,直到遇到“endif” ,如果是使用“pragma once” 编译器会直接停止编译该文件。 也就是说,使用“ifndef”时 虽然没有编译第二遍, 但是文件依然是会被读取的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。