A. C++ include的头文件里面的函数从来没用过会被编译进exe吗
头文件里你在代码中没有调用过的函数不会被编译到exe文件中。如果没有用过的函虚链数也编译进去,那可执行程序得多大。
虽然不会编译进去,平常还是需要用哪些函数就族誉塌包含哪个头文件,不需兆圆要的的不包含,编译时费时间。
C是多文件编译的,编译时会把每个Cpp文件单独编译,然后在链接过程中,代码中调用了哪个函数,编译器就会链接哪个函数,没有调用的不会链接。
B. 在Keil uVision4中,用C语言,不调用的子程序,会不会编译
1. “这两者都是用相同软件,有何区别?”
是不同的软件。
2. “为什么8051不可以自动不编译没有调用的子程序?”
因为用户可能在汇编中隐式调用某个字程序。
对于你所说“在编译ARM(LPC1768)时,有子程序没有被调用,不会有警告,不调用的程序有不会编译为代码”我持怀疑态度。
不管哪种方式编程都很有可能隐式调用函数的,如通过函数指针。所以不编译非显式调用的子程序是明显违反编程人员意图的行为。两种可能:默认项目设置不当;或者对这类子程序需要添加特别的类型说明或编译开关。
想知道两种编译套装的区别,最好的资料就是其自带的说明文档。那几十兆的说明文档看下来包你受益无穷。
C. keilc中怎么使一个库函数不调用时不编译
它不会被嵌入代码而占用空间的,当然动态链接库除外。KEIL把源代码编译成最终执行代码,要经历两个过程,一是编译:即把源文件编译成中间目标文件,简单的说是把C文件编译成.O或.obj文件;二是链接,这个是生成可执行文件的关键,它会根据MAIN函数头和各个中断函数中调用的函数去中间目标文件中选择对应的代码并最终打包到一起生成可执行文件。所以,声明未被用到的函数是不会占用程序存储空间的,但是它会被编译,只是在连接时不会被选用。希望对你有帮助!!!
D. 嵌入式中函数不会被调用会编译到固件吗
嵌入式系统
函数如果仅是定义了,而没有被其它函数调用,这种情况下,优化系统不会将此函数编译进最终可执行结果。所以更不会占用内存。
2.PC系统
通常情况下函数如果仅是定义了,但未被调用,系统会进行编译,能够检查并发现函数中的问题,但是否编译进最终的可执行文件受编译系统的控制,如果未被编译到系统中则不会占用内存。即便编译到了系统中,由于PC系统在运行时,并不会将所有的程序都加载至内存,因此,还会受到操作系统本身的限制。
3.BS系统
服务器端的程序通常情况下会占用内存,因为系统不清楚是否会被调用,尤其是在WebService这样的系统上。
客户端的程序,无论是否被调用,在传输、加载等情况下,肯定会被代码管理系统预编译,因此,也是需要占用内存的。
E. 单片机C语言编程,假如头文件里的函数没有被调用,那么该函数会不会最后编译出来而占用内存
没有用到自然就不会被编译,就不会占空间
如果头文件定义有1000个函数
你的程序只用了1个函数
那么编译后的程序,只有这一个函数的内容