C++为什么使用静态库还要包含头文件呢?

如图,用到了URLDownloadToFile这个函数,需要使用urlmon.lib这个静态库,但看别人写的,会先写包含一个关于这个静态库的头文件,我这里像他们一样也在前... 如图,用到了URLDownloadToFile这个函数,需要使用urlmon.lib 这个静态库,但看别人写的,会先写包含一个关于这个静态库的头文件,我这里像他们一样也在前面包含了头文件..但我发现似乎把#include删掉之后,再代码末尾添加#pragma comment(lib,"urlmon.lib") 程序编译也没有一点问题...那别人的#include的意义何在??还是说这是他写错了呢?谢谢 展开
 我来答
百度网友8b58de0
2019-08-17 · TA获得超过945个赞
知道小有建树答主
回答量:1079
采纳率:83%
帮助的人:324万
展开全部
#include的头文件一般是变量和函数或宏的定义。下面结合你的问题来说说为什么还要包含头文件。
首先要知道c/c++代码到生成为程序有2大过程,一个是编译过程,一个是链接过程。
若要使用URLDownloadToFile函数,就必须告诉编译器这个函数的定义,比如函数有几个参数,各个参数的类型等等,就是函数的定义,编译器就会根据这些判断你的调用是否合法或者是否有错误,没问题才会实现正常的调用,如果不包含,第一步的编译过程就通不过,所以必须包含对应头文件,如果不包含头文件,那你给函数在代码中写个函数定义也行。
通过了编译过程,下一步就是链接过程,就是把代码碎片链接在一起形成可以运行的程序。如果没有#pragma comment(lib,"urlmon.lib") 链接就不能通过,因为编译器或链接器将找不到URLDownloadToFile这个函数模块进行链接。

再来说下为什么你删除也能编译,可能原因:
1.在其它地方有函数定义。
2.直接用了上次正确的编译代码,而直接链接。
Storm代理
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式