头文件中的声明如何引用库文件中的定义?
必须要明确的是:1、为不致源程序过大,库将其声明和定义分开,这样在利用库时无需包含不需要的定义部分,只需通过其声明部分引用所需的定义。2、库的声明文件不能包含定义文件,如...
必须要明确的是:
1、为不致源程序过大,库将其声明和定义分开,这样在利用库时无需包含不需要的定义部分,只需通过其声明部分引用所需的定义。
2、库的声明文件不能包含定义文件,如果一旦包含了,那等于声明和定义又合到一起了。
基于以上两点,那么当我们在源程序中包含头文件时,其是如何引用到库的声明部分的呢?难道是编译器遇到是头文件的声明就自动转到在整个库中搜索其相应的定义吗? 展开
1、为不致源程序过大,库将其声明和定义分开,这样在利用库时无需包含不需要的定义部分,只需通过其声明部分引用所需的定义。
2、库的声明文件不能包含定义文件,如果一旦包含了,那等于声明和定义又合到一起了。
基于以上两点,那么当我们在源程序中包含头文件时,其是如何引用到库的声明部分的呢?难道是编译器遇到是头文件的声明就自动转到在整个库中搜索其相应的定义吗? 展开
展开全部
c++的编译器,在预处理的时候,根据头文件名字在默认的include所在路径的中查找匹配的头文件,如果存在这个文件,则编译器在根据这个头文件里面的函数声明对比,确定源代码中所使用的函数有效性,如果有效,则编译器根据该头文件自啊默认的librarypath中查找对应的库,(一般的库文件都是规律的以lib+部分头文件名表示,)找到之后,将对应的函数定义,加入到源代码中,完成预处理操作。
这一点在linux下的g++ 体现的很明显
在linux下 执行 g++ -v就能看到基本路径的默认配置了
不过静态库和动态库是不一样的,上面那种状态只是适合静态库,
动态库的话,并不会将函数完整加入到源代码中,而是以接口的方式存在,在运行时候,自动调用动态库中的函数。
这个是我个人的理解 呵呵 在平时接触到的程序基本就是这样的模式
这一点在linux下的g++ 体现的很明显
在linux下 执行 g++ -v就能看到基本路径的默认配置了
不过静态库和动态库是不一样的,上面那种状态只是适合静态库,
动态库的话,并不会将函数完整加入到源代码中,而是以接口的方式存在,在运行时候,自动调用动态库中的函数。
这个是我个人的理解 呵呵 在平时接触到的程序基本就是这样的模式
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询