在C中使用C风格的struct / typedef

前端之家收集整理的这篇文章主要介绍了在C中使用C风格的struct / typedef前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个混合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.对这里发生的事情有什么解释吗?

解决方法

I thought that using the extern "C" would make the compiler treat the C header as C

不.外部“C”的唯一作用是控制名称修改.代码仍然编译为C(虽然需要修改名称的东西,如名称空间或模板,将无法工作).特别是,有关结构标识符的规则仍然适用.

猜你在找的C&C++相关文章