我有一个混合C和C的项目.在C头文件中,我有这样的代码:
typedef struct mystruct* mystruct; struct mystruct { // whatever struct needs };
要在C文件中使用它,我正在做:
extern "C" { #include "mystruct.h" }
所以你看到我正在使用相同的名称创建一个不透明的指针.这在C中很好,但在C中却没有(因为要求在C中使用struct关键字进行实例化,而不是在C中实例化).但是,在尝试编译C代码时,我收到错误(相互矛盾的声明).我认为使用extern“C”会使编译器将C头视为C,但似乎仍然将它用作C.对这里发生的事情有什么解释吗?