您现在的位置是:首页 >学无止境 >C++中防止头文件重复包含处理办法网站首页学无止境
C++中防止头文件重复包含处理办法
简介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_
也是约定俗的写法,是头文件的全部大写,再加上_
下划线即可
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。