EasyC++单独编译

 更新时间:2021年12月17日 08:43:59   作者:梁唐  
这篇文章主要介绍了EasyC++单独编译,在上一篇当中,我们编写好了头文件coordin.h,现在我们要完成它的实现。需要的小伙伴可以先学习上一篇内容然后一起与小编一起进入本篇内容一起学习吧

文章转自:微信公众号:Coder梁(ID:Coder_LT)

联合编译:

上一篇当中,我们编写好了头文件coordin.h,现在我们要完成它的实现

头文件当中只能放一些生命和常量的定义,不能有具体的实现。所以我们要把具体的实现单独放入一个cpp文件当中。因为我们的头文件叫做coordin.h,那么我们与之对应的cpp文件自然就叫做coordin.cpp

在coordin.h当中我们声明了两个函数,自然我们就要完成这两个函数的实现:

#include <cstdio>
#include <iostream>
#include <cmath>
#include "coordin.h"

using namespace std;

polar rect_to_polar(rect xypos) {
    polar answer;
    answer.distance = sqrt(xypos.x * xypos.x + xypos.y * xypos.y);
    answer.angle = atan2(xypos.y, xypos.x);
    return answer;
}

void show_polar(polar dapos) {
    const double rad_to_deg = 57.29577951;

    cout << "distance = " << dapos.distance;
    cout << ", angle = " << dapos.angle * rad_to_deg;
    cout << " degress" << endl;
}

这两个函数一个完成的是直角坐标到极坐标的转换,还有一个是极坐标的输出,输出的时候还包括了一个弧度到角度的转化。

最后我们再来看main函数:

#include "coordin.h"
using namespace std;

int main() {
 rect rplace;
 polar pplace;
 while (cin >> rplace.x >> rplace.y) {
  pplace = rect_to_polar(rplace);
  show_polar(pplace);
 }
}   

这里有一个小细节,我们在引入coordin.h的时候使用的是双引号,而不是<>符号。因为如果使用的是尖括号,那么C++编译器将在存储标准头文件的文件系统当中去查找这个头文件,如果是双引号则会在当前目录或源代码目录查找。

还有虽然我们用到的函数实现是在coordin.cpp当中实现的,但我们并不需要将它include进来。而是在之后编译的时候连接进来。

现在我们的代码都已经写好了,但是我们有两个cpp文件,要怎么编译运行呢?

我们可以使用g++ -c命令,将cpp代码编译成目标代码。

g++ -o coordin.cpp


编译之后,我们将会得到一个coordin.o文件,我们再继续编译main.cpp文件:

g++ -o main.cpp


这样我们就得到了两个.o文件,

我们需要把这两个.o文件连接到一起编程一个可执行文件:

g++ coordin.o main.o -o cur


当然,我们也可以把main.cpp的编译和连接步骤合并在一起:

g++ main.cpp coordin.o -o cur


我们单独对每个文件编译的好处是,比如当我们只需要改动main.cpp的时候,coordin.cpp文件可以不用再编译,从而节省编译运行的时间。我们都知道,大型的C++项目的编译是非常耗时的。

当然大型项目当中,我们一般也不会手动编译项目,而会使用例如make等一些自动编译脚本。

到此这篇关于EasyC++单独编译的文章就介绍到这了,更多相关EasyC++单独编译内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解c++ 继承

    详解c++ 继承

    这篇文章主要介绍了c++ 继承的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • C语言文件操作的入门详解教程

    C语言文件操作的入门详解教程

    这篇文章主要给大家介绍了关于C语言文件操作的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 详解C++中的左值,纯右值和将亡值

    详解C++中的左值,纯右值和将亡值

    C++中本身是存在左值,右值的概念,但是在C11中又出现了左值,纯右值,将亡值得概念;这里我们主要介绍这些值的概念,感兴趣的可以了解一下
    2022-09-09
  • C语言实现一个通讯录

    C语言实现一个通讯录

    这篇文章主要为大家详细介绍了用C语言实现一个通讯录,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • C++超详细讲解数组操作符的重载

    C++超详细讲解数组操作符的重载

    C 语言提供了丰富的操作符,有:算术操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符等。接下了让我们探究一下数组操作符的重载
    2022-06-06
  • C++初阶教程之缺省参数与函数重载

    C++初阶教程之缺省参数与函数重载

    缺省参数是声明或定义函数时为函数的参数指定一个缺省值,在调用该函数时如果没有指定实参则采用该形参的缺省值,否则使用指定的实参,这篇文章主要给大家介绍了关于C++初阶之缺省参数与函数重载的相关资料,需要的朋友可以参考下
    2023-04-04
  • C语言中enum关键字的实现示例

    C语言中enum关键字的实现示例

    这篇文章主要介绍了C语言中enum关键字的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • C语言 自增自减运算的区别详解及实例

    C语言 自增自减运算的区别详解及实例

    这篇文章主要介绍了C语言中的++a和a++的区别详解及实例的相关资料,需要的朋友可以参考下
    2017-05-05
  • Qt实现拖动单个控件移动的示例代码

    Qt实现拖动单个控件移动的示例代码

    做惯了静态图,今天来搞一搞动态图吧!本文将利用Qt实现拖动单个控件移动效果,文中的示例代码讲解详细,感兴趣的可以动手尝试一下
    2022-06-06
  • C++数据结构之红黑树的实现

    C++数据结构之红黑树的实现

    红黑树在表意上就是一棵每个节点带有颜色的二叉搜索树,并通过对节点颜色的控制,使该二叉搜索树达到尽量平衡的状态。本文主要为大家介绍了C++中红黑树的原理及实现,需要的可以参考一下
    2022-08-08

最新评论