函数不会被编译到固件吗
‘壹’ 编译器会把cpp文件中没被调用的函数编译到obj文件中吗
生成.o文件(obj文件)时,会生成这个函数的相关代码。
但是在链接时,即在生成可执行程序时,因为函数没有被调用到,应该不会链接进去。
‘贰’ 每个函数都可以被单独编译对吗
A、main函数是不能被任何函数调用的,所以a错了
B、函数可以单独编译,每个函数都能单独写成一个文件,所以B对的
C、函数都要通过main函数的调用才能正确的运行,main函数是一个程序的唯一入口
D、函数是不可以嵌套使用的
‘叁’ STM32中库函数中各个函数的功能都能被用到吗
主要看你需要什么功能,需要什么功能的话,就用什么功能。如果需要SPI功能,当然SPI的库函数需要添加进编译器,如果I2C功能在你的项目中用不着,当然,就可以不添加I2C功能进入编译器中。
当然为途省事的话,也能把整个固件库函数添加到编译器之中,但是这样的话,对存储空间就会有浪费了
‘肆’ 嵌入式中函数不会被调用会编译到固件吗
嵌入式系统
函数如果仅是定义了,而没有被其它函数调用,这种情况下,优化系统不会将此函数编译进最终可执行结果。所以更不会占用内存。
2.PC系统
通常情况下函数如果仅是定义了,但未被调用,系统会进行编译,能够检查并发现函数中的问题,但是否编译进最终的可执行文件受编译系统的控制,如果未被编译到系统中则不会占用内存。即便编译到了系统中,由于PC系统在运行时,并不会将所有的程序都加载至内存,因此,还会受到操作系统本身的限制。
3.BS系统
服务器端的程序通常情况下会占用内存,因为系统不清楚是否会被调用,尤其是在WebService这样的系统上。
客户端的程序,无论是否被调用,在传输、加载等情况下,肯定会被代码管理系统预编译,因此,也是需要占用内存的。
‘伍’ 单片机c语言编程,假如头文件里的函数没有被调用,那么该函数会不会最后编译出来而占用内存
没有用到自然就不会被编译,就不会占空间
如果头文件定义有1000个函数
你的程序只用了1个函数
那么编译后的程序,只有这一个函数的内容
‘陆’ 未被调用的函数是否也会被编译进程序里
这个要看是编译性语言还是解读性语言,比如html之类的是读到哪里编译到哪里
‘柒’ c语言中的函数可不可以单独进行编译
是可以的。
库函数是把函数放到库里,供别人使用的一种方式。函数库是由系统建立的具有一定功能的函数的集合。库中存放函数的名称和对应的目标代码,以及连接过程中所需的重定位信息。用户也可以根据自己的需要建立自己的用户函数库。
使用C语言的语句直接计算sin或cos函数,就需要编写颇为复杂的程序。因为C语言的语句中没有提供直接计算sin或cos函数的语句。又如为了显示一段文字,我们在C语言中也找不到显示语句,只能使用库函数printf。
(7)函数不会被编译到固件吗扩展阅读
函数库的分类
1、字符串、内存和字符函数
需要的包含文件:string.h、mem.h、ctype.h或string.h;
2、数学函数
需要的包含文件:math.h;
3、动态存储分配
需要的包含文件:alloc.h或stdlib.h ;
‘捌’ C语言中一个函数如果在主函数中没有调用,会被编译么
会的,当你运行时,编译器还要检查你的函数是否有格式或其它错误!
‘玖’ 通过头文件,我只调取一个函数,那么头文件中所有函数的实现是不是都要被编译一下,这样是浪费时间么
头文件里只声明函数,它的函数体并不在这里,所以它的函数体根本不会被重新编译。
而且,所谓“浪费”的编译时间,比起你找出不需要编译的,然后只编译需要的,恐怕还要少点。对于一个大项目,找到一个头文件中没有被使用的部分是非常非常复杂的,你需要搜索整个项目才能确定它没有被使用,这可能要遍历亿万行代码的