我有向前声明枚举的 C 标头。显然,这在 C++ 中是不可能的,所以所有的预处理器都封装了表单
外部“C”{ #include <header.h> }
不会有帮助的。有什么方法可以将这些头文件包含在 C++ 翻译单元中,而无需我编辑 C 头文件?幸运的是,在这种情况下修改 C 标头以避免前向声明相对容易,但这让我觉得这是一个非常重要的问题。一般来说,我认为总是可以从 C++ 链接到 C 库,但在某些情况下,无法包含标头似乎使这种做法变得不切实际。
前向声明的枚举在 C++0x 中可用。如果您的编译器还不支持它,那么将枚举包装在命名空间中将避免违反 ODR。
PS 一个很好的解释:http ://www.devx.com/cplus/Article/42478/1954?pf=true