关于c51单片机使用keil编译器的一些问题?
在模块化编程项目中,有多个c文件。每个c文件都定义了一些功能函数,在main.c中只调用了其他c文件的某一个函数,那么其他未被调用的函数会不会占内存空间?在定义了一个结构...
在模块化编程项目中,有多个c文件。每个c文件都定义了一些功能函数,在main.c中只调用了其他c文件的某一个函数,那么其他未被调用的函数会不会占内存空间?
在定义了一个结构体,但是结构体元素没有全部引用,那么没有引用的结构体元素是否会被分配内存?
在keil编译输出窗口有“Program Size: data=103.2 xdata=246 const=0 code=7955”提示,那么为什么“data=103.2”其中103.2怎么理解?
请懂得朋友仔细回答,在下不胜感激! 展开
在定义了一个结构体,但是结构体元素没有全部引用,那么没有引用的结构体元素是否会被分配内存?
在keil编译输出窗口有“Program Size: data=103.2 xdata=246 const=0 code=7955”提示,那么为什么“data=103.2”其中103.2怎么理解?
请懂得朋友仔细回答,在下不胜感激! 展开
1个回答
展开全部
1.如果没有被调用,就不会被编译,自然不占用空间。
2.只要结构体有元素被使用,就要占据整个结构体的空间。
3.多出来的0.2是位变量,表示你用了两个bit的变量。
2.只要结构体有元素被使用,就要占据整个结构体的空间。
3.多出来的0.2是位变量,表示你用了两个bit的变量。
更多追问追答
追问
你好,为什么我把结构体元素屏蔽几个之后进行编译,data和xdata数据没有变,而code变化了,原来code=7955,现在code=7938,code不是编译后程序占用的rom空间吗?
追答
code的确是占用rom的空间。
如果你一开始对结构体的元素赋值初始化的话,那编译器会产生对应的指令,你屏蔽了部分元素就等于减少了代码的量。比如说你给某个变量(在ram)中赋予初值时,生成的汇编代码里就有这个ram地址写入一个立即数的指令,如果不赋予初值就不会这样。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询