究竟什么是C ++头文件和声明?

时间:2013-04-06 14:51:34

标签: c++

我知道有关头文件和前向声明的基础知识,但我想知道,如果我在两个单独的头文件中声明完全相同的东西,然后编译它,那会有用吗?

C ++接口,在这种情况下,是可移植的,我的意思是,如果我有两个lib并且它们共享相同的接口(声明或什么不是),理论上我可以在程序中复制相同的声明并实际编译,如果没有,为什么?

例如,C ++如何能够分辨两个不同文件中两个相同声明的区别?

假设我有两个不同的库,但是它们共享一些接口,它们是单独编译的,但是通过相同的工具,将来有可能将它们一起带到libs并实际传递这两个库之间的接口,就好像它是相同的,兼容的接口,即使它最初是从不同(但相同)的头文件编译的?

1 个答案:

答案 0 :(得分:1)

给定标识符的函数声明,变量声明和类定义可以随时出现在源代码中。它们每次出现时都必须完全相同(如果您在多个翻译单元中包含给定的头文件,则这是自动的。)

只有函数,变量和类成员函数的定义必须精确出现一次(内联函数的特殊规则)。

(模板有点不同:模板定义可能会重复出现,但所有事件都必须相同。但模板需要链接器进行一些非平凡的重复数据删除工作。)