搜尋

首頁  >  問答  >  主體

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

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

ringa_leeringa_lee2813 天前927

全部回覆(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
  • 取消回覆