在 C++ 中从 C 向前声明匿名结构

Forward declaring anonymous structure from C in c++

我有一个第三方 C 库,其匿名结构类似于

    typedef struct
     {
      ...
      }A;

此文件是通过程序自动生成的,因此可以根据某些内容进行更改

现在在 C++ 项目中我接受上述类型的参数,例如

  void foo(const A & in)
  {
    ...
  }

如何在定义上述函数的头文件中转发声明 A?

我试过了:

 typedef struct A A;

 struct A;

还有

 typedef A A;

出于好奇。

然而,这些会导致重新定义类型的编译时错误。 谢谢

遗憾的是你运气不好。

Atypedef 未加标签的 struct。而且你不能转发声明因为你不能直接引用那个 struct.

你能改变生成器使其输出 typedef struct A { ... } A; 吗?然后它在 C 和 C++ 中都能很好地编译,并且您可以在 C++ 中向前声明。

否则您有两个选择:1. #include 包含 struct 声明的文件。 2. 手工复制struct。显然 (1) 更可取。

你不能,因为不能向前声明类型别名。只有实际类型可以。