六、多文件分离式编译
分离式编译意味着将项目程序分离到几个文件当中,每个文件独立编译,通常用于C++项目当中。
1. 文件组织结构
下面以一个阶乘示例来说明,一个文件夹下面共有3个文件,分别是主文件,被调用的函数所在文件和头文件:
fact.cpp是被调用的子函数所在文件:
#include "Chapter6.h"
long int factorial(int n){
if (n <= 0){
return -1;
}
long int result = 1;
for (int i = 1; i <= n; i++)
result *= i;
return result;
}
Chapter6.h是头文件:
#ifndef FACTORIAL_H //防止重复声明
#define FACTORIAL_H
long int factorial(int n);
#endif
factMain.cpp是主文件:
#include <iostream>
#include "Chapter6.h"
using namespace std;
int main(){
long int factorial_n;
int n;
cout << "Please input integer n: " << endl;
cin >> n;
factorial_n = factorial(n);
cout << "The factorial of " << n << " is " << factorial_n << endl;
return 0;
}
2. 编译方式
在Linux系统中:
g++ factMain.cpp fact.cpp -o main.o # main.o为输出文件
或者
g++ -c factMain.cpp # generates factMain.o
g++ -c fact.cpp # generates fact.o
g++ factMain.o fact.o -o main.o
3. 题外话:vscode多文件配置
多文件配置文件task.json:
"args": [
"$\frac{{fileDirname}}{*.cpp",} //单文件写"${file}"
"-o",
"${fileDirname}/${fileBasenameNoExtension}.o",
"-g",
"-Wall",
"-static-libgcc",
"-std=c++17"
],
标签:文件,int,factorial,编译,factMain,分离式,cpp,fact
From: https://www.cnblogs.com/XiongHaiyang/p/18029784