Horde3d声称可以使用C“样式”接口(interface)。但是由于这些错误,我无法包含编译C源代码的 header :

..../../horde3d/SDK_1.0.0_Beta5/Horde3D/Bindings/C++/Horde3D.h:127: error: nested redefinition of ‘enum List’

由于这些声明:
....

struct H3DOptions
{
    /* ... */
    enum List
    {
        MaxLogLevel = 1,
        MaxNumMessages,
        TrilinearFiltering,
        ....
    };
...
};

struct H3DStats
{
    /* ... */
    enum List
    {
        TriCount = 100,
        BatchCount,
        LightPassCount,
        ...
    };
};

....

由于Horde3d确实是用C++开发的,因此标识符列表通过包含struct来限定。这似乎在C中不可用。除了重写 header 之外,是否存在一些解决方法?

最佳答案

这是有目的的。 C++标准的附录C说明:



显然,委员会仅考虑了有效的C代码如何作为C++工作,而不考虑使用新功能的C++代码仍然是有效的C语言。

08-16 03:19