📅  最后修改于: 2023-12-03 14:59:48.737000             🧑  作者: Mango
C++的源文件可以包含其他源文件来完成不同的任务,这样就可以将一个大的程序分解成多个小的模块。这种机制称为源文件包含,使用#include
指令完成。
#include
指令可以将其他源文件包含到当前源文件中。通常,我们将代码的声明和定义分别放在不同的文件中,通过将声明文件包含到定义文件中,来实现代码的模块化和重用。
可以用以下方式包含文件:
#include <filename> // 使用尖括号引用系统标准库的头文件
#include "filename" // 使用双引号引用用户自定义的头文件
其中,尖括号引用系统标准库的头文件,双引号引用用户自定义的头文件。系统头文件通常在编译器的标准库文件夹中,而用户自定义的头文件则需要在程序当前目录或编译器搜索路径下。
以下介绍一个实际的场景,展示如何使用源文件包含。
声明头文件 func.h
,包含了两个函数的声明:
#ifndef FUNC_H
#define FUNC_H
int add(int x, int y);
float div(int x, int y);
#endif
定义源文件 func.cpp
,包含了两个函数的定义:
#include "func.h"
int add(int x, int y){
return x + y;
}
float div(int x, int y){
if (y == 0){
return -1; // 除数为零时返回错误码
}
return (float)x / (float)y;
}
使用源文件 func.cpp
的程序 main.cpp
:
#include <iostream>
#include "func.h"
int main(){
std::cout << "4 + 5 = " << add(4, 5) << std::endl;
std::cout << "10 / 3 = " << div(10, 3) << std::endl;
return 0;
}
最终编译时,需要将 main.cpp
和 func.cpp
两个源文件一起编译:
g++ main.cpp func.cpp -o main
执行 main
程序时,输出:
4 + 5 = 9
10 / 3 = 3.33333
#ifndef
、#define
、#endif
来解决。示例如下:// func.h
#ifndef FUNC_H
#define FUNC_H
int add(int x, int y);
#endif
// main.cpp
#include <iostream>
#include "func.h"
int main(){
std::cout << "4 + 5 = " << add(4, 5) << std::endl;
return 0;
}