如何存在实现代码只包括头文件

时间:2012-06-25 20:30:12

标签: c++ header include

这是一个理论上的怀疑。 假设您有一个只有两个文件的小库:lib.h. lib.cpp中的头文件,实现代码。 按照惯例,在C ++中我们在lib.cpp中包含lib.h,也就是说,lib.h“不知道”存在“lib.cpp”。 因此,要在程序中使用我们的库,支持:myprogram.cpp和myprogram.h,我必须只包含“lib.h” 那么,我的程序将如何加载头文件的实现?如果头文件“不知道”有关实现文件的存在吗?

2 个答案:

答案 0 :(得分:2)

您必须告诉链接器lib文件,例如lib.liblib.so

.cpp个文件将被编译为对象文件,然后编译为.lib.so个文件。 在包含myprogram.cpp的项目中,您必须告知链接器.lib/.so来自lib.cpp的文件。

答案 1 :(得分:2)

通常,您将实现编译到库中并将程序链接到该库。因此,除非实现代码实际上在标头中,或者在标头包含的文件中,因此也是分布式的,否则您的断言“实现代码只包含头文件”是错误的。