首页 > 其他分享 >六、多文件分离式编译

六、多文件分离式编译

时间:2024-02-23 16:15:10浏览次数:22  
标签:文件 int factorial 编译 factMain 分离式 cpp fact

六、多文件分离式编译

分离式编译意味着将项目程序分离到几个文件当中,每个文件独立编译,通常用于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

相关文章

  • 3D Slicer编译错误,无法打开包括文件: “pthread.h”解决
    3DSlicer编译错误:fatalerrorC1083:无法打开包括文件:“pthread.h”:Nosuchfileordirectory解决方案:安装pthread库 1、下载pthread库pthreads-w32-2-9-1-release.zip地址:https://sourceforge.net/projects/pthreads4w/2、解压zip解压后,您应该能看到几个文件夹,......
  • lazarus3.0 /fpc3.3.1编译某些控件会出现:Error: Forward declaration not solved xxx
    最近用lazarus3.0/fpc3.3.1时发现原来在lazarus2.2.6/fpc3.2.2能编译安装的控件出现类似下面的提示codebot.text.xml.pas(129,10)Error:Forwarddeclarationnotsolved"NewDocument:IDocument;"解决方法:本例子参照DocumentCreate:IDocument,在实现部分编写过程。{$i......
  • nginx显示指定文件
    nginx提供文件服务需增强安全性,数据集管理中通过配置nginx只显示指定目录下以preview.jpg(png,jpeg等)结尾的目录文件,其路径配置需要使用正则表达式,并且传参,配置如下:#nginxlocation中~开头的路径表示使用正则表达式location~ /data/data/dir/(.+preview\.(?:jpg|jpeg|gif|p......
  • 删除Windows 11 文件资源管理器 左侧的图标(最全) 文档、音乐、视频、图片、图库、主
    删除Windows11文件资源管理器左侧的图标(最全)文档、音乐、视频、图片、图库、主文件夹等1、删除此电脑(文件资源管理器)左侧的图标,文件夹下的全部文件夹都可以删除,推荐重命名一下跟之前不一样就好了,删除此电脑(文件资源管理器)左侧的图标,文件夹下的全部文件夹都可以删除,推......
  • 文件自动拷贝到桌面及设置桌面显示此电脑
    uname="$env:USERPROFILE"$uname=$uname.Substring($uname.length-8)$checkpath=test-path\\xx.xx.xxx.xxx\xx\xx\*.lnkif($checkpath-eq"True"){copy-item\\xx.xx.xxx.xxx\xx\xx\*.*-destination\\xxx\xx$\$uname......
  • 在k8S中,多个Pod如何实现使用同一个配置文件?
    在Kubernetes(k8S)中,多个Pod如需使用同一个配置文件,可以采用以下几种方法:ConfigMap创建一个ConfigMap,将共享的配置文件内容作为键值对存储。然后,在每个需要使用该配置文件的Pod的定义中,通过卷(Volume)和卷挂载(VolumeMounts)将ConfigMap挂载到容器内部的一个特定路径。......
  • Linux中在其他目录执行二进制文件
    Linux命令行中执行命令一般通过:./xxxx的方式,但前提是必须先进入二进制文件所在的目录(或者更上一层级的目录),如果在其他不相关的目录就不能通过这种方式执行。所以,最简单的方法是:查看当前的环境变量:echo$PATH,在列出的环境变量中选择一个目录,如:/home/xxx/bin,将文件放入这个目录,之后......
  • TGA文件格式
    目录简介术语TGA格式TGA头部(TGAHeader)图像/颜色表数据(Image/ColorMapData)颜色表数据图像数据开发者区域(DevelopArea)扩展区域(EXTENSIONAREA)TGA文件脚注(TGAFILEFOOTER)图像类型(ImageType)1:颜色表图像类型2:真彩图像3:黑白无颜色表图像9:RLE压缩的颜色表图像1......
  • 从源文件到可执行文件
    1.计算机只能运行本地代码:CPU能直接解析并运行的不是源代码而是本地代码的程序。作为计算机大脑的CPU也只能解释已经转换成本地代码的程序内容。2.本地代码的内容:用记事本打开由代码清单的内容转换成本地代码得到的EXE文件。每个数值都表示某一个命令或数据,这里我们用的是原始的d......
  • 5 - 设备文件创建
    DeviceFileCreation原文链接我的博客创建字符设备设备文件在上一个小节中,我们知道了如何分配主副设备号,但是到此为止,只是创建主副设备号。并未在/dev目录下创建设备文件。设备文件设备文件可以实现用户空间应用与硬件的通讯。它们并不是普通文件,只是从编程视角来看是一......