在 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;
出于好奇。
然而,这些会导致重新定义类型的编译时错误。
谢谢
遗憾的是你运气不好。
A
是 typedef
未加标签的 struct
。而且你不能转发声明因为你不能直接引用那个 struct
.
你能改变生成器使其输出 typedef struct A { ... } A;
吗?然后它在 C 和 C++ 中都能很好地编译,并且您可以在 C++ 中向前声明。
否则您有两个选择:1. #include
包含 struct
声明的文件。 2. 手工复制struct
。显然 (1) 更可取。
你不能,因为不能向前声明类型别名。只有实际类型可以。
我有一个第三方 C 库,其匿名结构类似于
typedef struct
{
...
}A;
此文件是通过程序自动生成的,因此可以根据某些内容进行更改
现在在 C++ 项目中我接受上述类型的参数,例如
void foo(const A & in)
{
...
}
如何在定义上述函数的头文件中转发声明 A?
我试过了:
typedef struct A A;
或
struct A;
还有
typedef A A;
出于好奇。
然而,这些会导致重新定义类型的编译时错误。 谢谢
遗憾的是你运气不好。
A
是 typedef
未加标签的 struct
。而且你不能转发声明因为你不能直接引用那个 struct
.
你能改变生成器使其输出 typedef struct A { ... } A;
吗?然后它在 C 和 C++ 中都能很好地编译,并且您可以在 C++ 中向前声明。
否则您有两个选择:1. #include
包含 struct
声明的文件。 2. 手工复制struct
。显然 (1) 更可取。
你不能,因为不能向前声明类型别名。只有实际类型可以。