新手上路
- 积分
- 26
- 金钱
- 26
- 注册时间
- 2018-12-5
- 在线时间
- 6 小时
|

楼主 |
发表于 2018-12-6 01:19:10
|
显示全部楼层
(1) test_sys(); 是sys.c里定义的函数 在sys.h 里声明
(2) test_s(); 是beep.c定义的函数 在beep.h里声明
(3) _test(); 是core_cm3.c定义的函数 我在core_cm3.h里加入extern void _test(void);
core_cm3.c里不include‘’core_cm3.h‘’,但是主函数文件include‘’core_cm3.h‘’,对于主函数调用_test(),应该算是调用外部函数吧?
测试结果:
对于(1)如果主函数不调用 test_sys(),code大小不改变,.map文件里也找不到test_sys符号。
如果调用,code大小改变,map文件里找到两处test_sys符号。
对于(2) 如果主函数不调用 test_s(),code增加,.map文件里Global Symbols找到一处 test_s符号。
如果调用,code继续增加,map文件里Section Cross References又找到一处 test_s符号。(此时一共两处了)。
对于(3) 其结果和(1)一样。
现在的问题就是(1)和(2)的条件一样,但是编译后的结果却不一样。这是为啥咧?
文件我又修改了一下重新上传一遍,有知道的老哥帮忙再看看呗?难道这是bug?
又试了一下,sys.c的其他函数只要是没在主函数调用,在map文件里都找不到符号why? |
|