搜索

首页  >  问答  >  正文

c++代码在什么情况下,修改了代码,可以不需要编译?直接进行链接运行哦?

这是我看书的时候,想到的一个问题。不懂为什么某种情况下不需要编译代码也行(之前编译过,然后修改),平时自己修改了代码,都是要重新编译运行的。

ringa_leeringa_lee2804 天前918

全部回复(4)我来回复

  • ringa_lee

    ringa_lee2017-04-17 13:40:53

    不需要编译指的是和修改不关联的文件。
    比如有以下文件:
    common.h、file1.h、file1.c、file2.h、file2.c。
    其中,file1.c中include了common.h和file1.h,file2.c中只include了file2.h。
    编译之后file1.c输出链接文件file1.o,file2.c输出链接文件file2.o。
    那么如果是修改了common.h的话file1.c和file2.c都需重新编译,但是如果只是修改了file1.h的话就只有file1.c需要重新编译。书上讲的应该是这个意思。

    哦,补充一下,编译只是生成链接文件(如上面提到的.o文件),链接(link)之后才最终生成可执行文件,修改源代码都会导致重新生成可执行程序(也就是重新link),但并不是所有的链接文件都会重新生成,换句话也就是不是所有的.c文件都会被重新编译。

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-17 13:40:53

    不编译咋运行啊

    回复
    0
  • PHP中文网

    PHP中文网2017-04-17 13:40:53

    C++改了代码就要重新编译运行的。除非你改了一下又改回来编译前的代码,然后IDE还有这个识别功能,那或许不用吧!

    回复
    0
  • 迷茫

    迷茫2017-04-17 13:40:53

    我理解,你这里说的“不需要编译”是如果项目中引用了其他库,那么当这些库的内部实现(.c/.cpp)发生变化,但接口(.h)没有变时,该项目不需要重新编译,(但发生变化的库无论如何是需要重新编译的),只需要链接新的库就可以了。

    回复
    0
  • 取消回复