当前位置: 首页 > 科技观察

EasyC++,单独编译

时间:2023-03-11 23:50:19 科技观察

大家好,我是梁唐。想要追求更好阅读体验的同学可以点击“阅读原文”访问github仓库。协编译在上一篇文章中,我们编写了头文件coordin.h,现在需要完成它的实现。头文件中只能放一些life和constants的定义,没有具体的实现。所以我们要将具体的实现单独放到一个cpp文件中。因为我们的头文件叫做coordin.h,那么我们对应的cpp文件自然就叫做coordin.cpp。我们在coordin.h中声明了两个函数,自然要完成这两个函数的实现:{polaranswer;answer.distance=sqrt(xypos.x*xypos.x+xypos.y*xypos.y);answer.angle=atan2(xypos.y,xypos.x);returnsanswer;}voidshow_polar(polardapos){constdoublerad_to_deg=57.29577951;cout<<"distance="<>rplace.x>>rplace.y){pplace=rect_to_polar(rplace);show_polar(pplace);}}这里有一个小细节,当我们导入coordin.h时,我们使用双引号而不是<>符号。因为如果使用尖括号,C++编译器会在存放标准头文件的文件系统中寻找头文件,如果是双引号,则会在当前目录或源代码目录中寻找。另外,虽然我们使用的函数实现是在coordin.cpp中实现的,但是我们不需要包含它。相反,它会在稍后编译时链接进来。现在我们的代码已经写好了,但是我们有两个cpp文件,怎么编译运行呢?我们可以使用g++-c命令将cpp代码编译成目标代码。g++-ocoordin.cpp编译完成后,我们会得到一个coordin.o文件,我们继续编译main.cpp文件:g++-omain.cpp,这样就得到了两个.o文件。最后,我们需要将这两个.o文件连接在一起,编写出一个可执行文件:g++coordin.omain.o-ocur当然,我们也可以将main.cpp的编译和链接步骤结合起来:g++main.cppcoordin.o-ocur单独编译每个文件的好处是,比如当我们只需要改动main.cpp时,不需要重新编译coordin.cpp文件,这样就节省了编译的时间和运行。我们都知道大型C++项目的编译是非常耗时的。当然,在大型项目中,我们一般不会手动编译项目,而是使用一些make等自动编译脚本。本文转载自微信公众号“码农”,可通过以下二维码关注。转载本文请联系编码员梁公众号。