首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言编译连接有关问题求教大侠

2013-06-25 
C语言编译连接问题求教大侠!假如有2个.c文件,a.c和b.c,他们都调用了另外一个文件d.c里面的test()函数,这3

C语言编译连接问题求教大侠!
假如有2个.c文件,a.c和b.c,他们都调用了另外一个文件d.c里面的test()函数,这3个文件最后会连接生成一个bin文件,那么,在连接的时候,test()函数会被分别拷到a.c和b.c文件里面,最终生产的bin文件里面是不是有2段test的代码?还是说连接的时候,只把test函数的地址告诉a.c和b.c文件中调用该函数的地方,并不是把函数体拷过去?
[解决办法]
最终生成的bin只有一份test函数的代码,a.c和b.c中只是去call那份test函数代码而已。
[解决办法]

引用:
Quote: 引用:

那楼上的意思是说在连接的时候,只是把test函数的地址提供给a.c和b.c文件,并不是把test函数的实体拷到文件中,?
另外如果test函数是在某一静态库中呢?那连接的时候是不是把test函数的实体拷到a.c和b.c文件中?拷2次?


如果你调用同一个函数n 次并最终只形成一个 bin 文件,假设需要copy 此函数实体n次,那为何使用宏代替函数会明显增加 bin 文件的 size?


静态库中,一般这个库的代码会全部拷贝进你的exe文件中,然后调用函数地址

热点排行
Bad Request.