【问题标题】:Forward declaring enum in C header included in C++在 C++ 中包含的 C 头文件中前向声明枚举
【发布时间】:2010-12-31 15:37:29
【问题描述】:

我有向前声明枚举的 C 头文件。显然,这在 C++ 中是不可能的,所以表单的所有预处理器都包装了

外部“C”{ #include }

不会有帮助。有什么方法可以将这些头文件包含在 C++ 翻译单元中,而无需我编辑 C 头文件?幸运的是,在这种情况下修改 C 标头以避免前向声明相对容易,但这让我觉得这是一个非常重要的问题。一般来说,我认为总是可以从 C++ 链接到 C 库,但在某些情况下,无法包含标头似乎使这种做法不切实际。

一些相关的问题: 71416 681243

【问题讨论】:

标签: c++ c linkage


【解决方案1】:

前向声明的枚举在 C++0x 中可用。如果您的编译器还不支持它,那么将枚举包装在命名空间中将避免违反 ODR。

附:一个很好的解释:http://www.devx.com/cplus/Article/42478/1954?pf=true

【讨论】:

    猜你喜欢
    • 2018-02-01
    • 2010-09-09
    • 2010-10-31
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多