您现在的位置是:首页 >学无止境 >C++中防止头文件重复包含处理办法网站首页学无止境

C++中防止头文件重复包含处理办法

江南霹雳堂雷家雷无桀 2024-10-16 00:01:03
简介C++中防止头文件重复包含处理办法

首先给出可以拷贝的模板:

#ifndef _ADDNUM_H_
#define _ADDNUM_H_
  这里加上相应的函数声明即可
#endif

_ADDNUM_H_是头文件名称的大写,.h转换成_H,前后再加上_即可

在小型项目中,如果将函数的定义写在main函数的后面,那么需要在main函数前面加上这个函数的声明才可以顺利运行成功。

#include <iostream>
using namespace std;

int addNum(int a, int b);//函数声明
int main() {
	cout << addNum(3, 4) << endl;

	return 0;
}

int addNum(int a, int b) {
	return a + b;
}

当然如果你不想写函数声明也可以,将函数的定义放在main函数前面即可。

#include <iostream>
using namespace std;

int addNum(int a, int b) {
	return a + b;
}

int main() {
	cout << addNum(3, 4) << endl;

	return 0;
}

但是在大项目中一般不会这么写,那得多少个函数声明是不。在实际开发大项目中,一般不同的模块是由不同的程序员来开发的,函数的定义自己保留即可,别人只关注你提供的功能接口,也即别人不关心你产品的具体结构,你只需要给个说明书就好了。假设上面的addNum函数是由我开发的,我写好一个addNum函数,再写一个头文件addNum.h,一般约定俗成头文件文件名与对应的.cpp文件同名。
在这里插入图片描述
以上结构都懂的,不做解释啦。其中addNum.h头文件也没有问题,但是会有一个重复的问题,有时候在源码中写了多次头文件的引入,大型项目中会存在这种可能性的,因为头文件太多了。
在这里插入图片描述
那这个时候势必会报错,解决方案如下:
有两种,第一种是微软推荐的方法:在头文件前面加上#pragma once,但他只在VS编译器中支持,其他编译器是不支持的。
第二种方式也是大项目中常用的,如下:

#ifndef _ADDNUM_H_
#define _ADDNUM_H_
int addNum(int a, int b);
#endif

_ADDNUM_H_也是约定俗的写法,是头文件的全部大写,再加上_下划线即可

在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。