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之类的。