C++学习笔记之pragma once的理解 您所在的位置:网站首页 once是什么意思英文 C++学习笔记之pragma once的理解

C++学习笔记之pragma once的理解

2024-03-17 17:50| 来源: 网络整理| 查看: 265

#pragma once是一个比较常用的C/C++预处理指令,只要在头文件的最开始加入这条预处理指令,就能够保证头文件只被编译一次,防止头文件被重复引用。

**“被重复引用”**指头文件在cpp文件中多次被include,include嵌套造可能现象造成头文件多次引用。

举例:a.h文件#include “c.h”,b.cpp文件#include “a.h” 和#include “c.h”。此时b.h就重复引用了c.h

teacher.h

//#pragma once class Teacher { };

test.cpp

#include "Teacher.h" #include "Teacher.h"//错误 C2011 “Teacher”:“class”类型重定义 方式一:#ifndef,#define,#endif

#ifndef的方式依赖于宏名字不能冲突,这不光可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小心同时包含。

#ifndef _TEST_H_ #define _TEST_H_ #endif // !TEST_H

_TEST_H_为预处理器变量

书写格式:头文件名大写,前后加下划线,“.”用下划线代替。比如test.h表示为_TEST_H_

预处理器变量两种状态:已定义或未定义

#ifndef 指示检测指定的预处理器变量是否未定义,如果未定义,那么跟在后面的所有指示被处理,直到出现#endif;如果已定义,#ifndef测试为假,该指示和#endif指示间的代码都被忽略#define 指示接受一个名字并定义该名字为预处理器变量

在调用该头文件时一般用#include “add.h”

方式二:pragma once

#pragma once则由编译器提供保证:同一个文件不会被编译多次。注意这里所说的“同一个文件”是指物理上的一个文件,而不是指内容相同的两个文件。

#pragma once

总结: #ifndef,#define,#endif是C/C++语言中的宏定义,通过宏定义避免文件多次编译。所以在所有支持C++语言的编译器上都是有效的,如果写的程序要跨平台,最好使用这种方式。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有