c++一个诡异的问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 20:26:31
CPP A 中定义了一个void NumToBCD(BYTE * pData, int nLen);
CPP B 中有void NumToBCD 完整的实现
A B 没有任何引入和关联.
这种函数调用机制是什么?
麻烦高人教下,谢谢

不是没有任何关联, 他们的编译的obj文件会链接在一起

完整的程序发过来

放在一个项目中编译,自然会被link在一起啊
就等于是你把作文写在两页纸上一起交给老师一样

一定会有联系的,你查一下头文件的所包含的内容。
不可能无缘无故的就实现了调用,否则机器也不会通过编译的。
你再查一下!

通过连接器啊,还有个概念叫符号表

函数会被写道符号表去,连结的时候去查那个表

CPP A编译后会生成A.OBJ,CPP B编译后会生成B.OBJ,
当最终程序连接成EXE或者DLL或者LIB时,编译程序会根据声明的函数名称在该项目的所有OBJ文件中找该函数的实现内容,找到就OK,而不管在哪个OBJ文件里面.