A. 如何改動makefile來避免沒有改動過的.c文件重復編譯
本來makefile就是按照時間戳來決定是否編譯哪些文件,所以你這個問題等於沒提。只要你不make clean。當出現錯誤後修改在重新make的話 它只會繼續編譯那些時間戳大於剛才編譯的時間戳,所以那些沒有改動的c文件是不會再參與編譯的。
B. a.c包含a.h a.h包含b.h b.c包含b.h 如果b.h發生改變 哪些會被重新編譯為什麼
如果你a.c和b.c都已經編譯過了。
你改動頭文件b.h。
那麼如果你想在a.c中重新生效,則需要重新編譯a.c,這樣改動後的b.c才能在a.c新生成的執行文件中生效。
同理,你如果b.h想在b.c中生效,則重新編譯。
編譯完成的時候,就將代碼已經生成了一個新的可以執行的文件,b.h在編譯後改動,所以可執行文件當然就不會改動啦。
望採納。
C. 如何反編譯c代碼
反編譯C代碼是一個復雜的過程,因為C語言代碼被編譯成機器碼後,原始的高級語言結構會丟失。盡管如此,仍有一些工具和技術可以幫助進行反向工程。
首先,可以使用反匯編工具如IDA Pro、OllyDbg等,將二進製程序中的機器碼轉換為人類可讀的匯編代碼。這些工具可以幫助理解程序的執行流程和操作。
其次,對於希望將匯編代碼進一步轉換為類似C語言的高級代碼,可以使用反組譯工具如Hex-Rays Decompiler。這類工具能夠嘗試將匯編代碼轉換為更易於理解的C語言偽代碼,但需要注意的是,轉換結果可能不是完全准確的,且可能包含大量的中間變數和復雜的控制結構。
最後,反編譯過程可能需要結合代碼分析工具,如Ghidra,來輔助理解程序的邏輯和結構。這些工具能夠分析二進制文件中的控制流程、函數調用等,幫助逆向工程師更快地理解程序。
總之,反編譯C代碼是一個需要專業知識和工具支持的過程,其結果可能受到多種因素的影響,包括編譯器的優化級別、源代碼的復雜度等。在進行反編譯時,需要謹慎處理可能遇到的法律問題和道德問題。
D. C語言編譯器會編譯改變過的代碼,而不會編譯沒有改動的代碼。 我想知道它是怎麼判斷程序是否有唄修改過的
編譯器要記錄你的編譯生成文件,比如obj、exe等的生成日期,發現與相關的文件如.c源文件、obj等日期舊時則選擇對此部分重新編譯。
特別地,它記錄所有相關文件,比如你新修改了某頭文件.h,編譯系統會逐一比較所有使用這個.h文件的編譯結果,如果發現時間舊了就重新編譯它們。
E. C語言 編程後,有錯誤,怎麼查看是那部分出錯了!
【編寫完代碼後直接編譯,如果有錯誤,編譯器會自動彈出提示的】
例子如下:
C語言是一種計算機程序設計語言。它既有高級語言的特點,又具有匯編語言的特點。它可以作為系統設計語言,編寫工作系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬體的應用程序。
C語言適用范圍大。適合於多種操作系統,如Windows、DOS、UNIX、LINUX等等;也適用於多種機型。C語言對編寫需要硬體進行操作的場合,明顯優於其它高級語言,有一些大型應用軟體也是用C語言編寫的。
F. 怎樣防止編譯後的C語言文件被反編譯
app反編譯後防止介面泄露的方法,就是使用谷歌提供的混淆工具,將不要反編譯的文件保留,其他的都進行混淆,這樣之後反編譯看到的都是一些亂碼,例如abc之類的。