在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&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...