0

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

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

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

假设我有两个不同的库,但它们共享一些接口,它们是分开编译的,但使用相同的工具,是否有可能在未来的步骤中将这些库放在一起并实际传递这两个库之间的接口,就好像它是相同,兼容的接口,即使它最初是从不同(但相同)的头文件编译的?

4

1 回答 1

1

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

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

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

于 2013-04-06T14:55:31.570 回答