C编程的困惑,我已经为此问题搞得精疲力尽了

[复制链接]
查看11 | 回复2 | 2008-6-30 15:32:41 | 显示全部楼层 |阅读模式
最近为学C编程,已经感觉力有不足了。其中有一个困惑,我到现在也没有弄清楚。就是关于API函数,我们调用API函数时,只要引用头文件就可以调用了,这就令我很不理解,我看了头文件,里面只有声明,没有函数体,那么函数体在哪里呢?后来,我查资料,得知API函数在DLL里,但是我还是迷惑,编译器是如何找到API这个函数体的呢?我们在程序中又没有告诉它API函数体的位置,头文件里只有声明,也没有告诉编译器API函数体在DLL里,那么编译是怎么加载API函数体的呢?我真的不能理解,很困惑,要疯掉了。请知道的人告诉我,我真的万分感谢,万分感谢!

回复

使用道具 举报

千问 | 2008-6-30 15:32:41 | 显示全部楼层
如果是dll,编译器不会加载函数体,只有程序运行的时候,函数体才会被加载(引用)。楼主可以看看gcc帮助中有关于连接库的内容。对于标准库,编译器是默认连接的,对于自己写的库,需要用命令参数指定路径和库名字。
回复

使用道具 举报

千问 | 2008-6-30 15:32:41 | 显示全部楼层
C是用二进制写的,那些头文件有被隐藏的二进制数据,有些是其他的头文件,有些是内置或常驻命令,还有些就是DLL命令.你无法用普通方法看到,必须用反编译的(仅为个人意见,若有大哥能有肯定回答,瓦也要学学)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行