您现在的位置是:亿华云 > IT科技
EasyC++,单独编译
亿华云2025-10-04 01:04:37【IT科技】0人已围观
简介大家好,我是梁唐。想要追求更好阅读体验的同学,可以点击「阅读原文」访问github仓库。联合编译在上一篇当中,我们编写好了头文件coordin.h,现在我们要完成它的实现。头文件当中只能放一些生命和常
大家好,单独编译我是单独编译梁唐。
想要追求更好阅读体验的单独编译同学,可以点击「阅读原文」访问github仓库。单独编译
联合编译
在上一篇当中,单独编译我们编写好了头文件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等一些自动编译脚本。
本文转载自微信公众号「Coder梁」,可以通过以下二维码关注。转载本文请联系Coder梁公众号。
很赞哦!(44)
相关文章
- 4、注册门槛低
- 使用 Vite 和 TypeScript 带你从零打造一个属于自己的 Vue3 组件库
- 客户端单元测试实践-C++篇
- PyCharm 2022.2 发布了!到底更新了啥?
- CNAME:对应解析的记录值为域名地址
- Java Web中日志跟踪的简单实现
- 斯坦福推出 mini 型 VR 眼镜:两个镜片会突出两条电路带
- 分布式链路追踪Jaeger + 微服务Pig在Rainbond上的实践分享
- 在数以亿计的网站中,我们应该抓住每一个可能带来宣传的机会,域名可以带有企业的名字,一般可以使用汉语拼音或者英语单词或者是相关缩写的形式,只要用户记住了你企业的名字,就能很容易的打出你的网站域名,同样的,记住了网站域名也能很快的记住你公司的名字。
- Vue 的响应式原则与双向数据绑定