微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在c中向前声明C中的匿名结构

我有一个第三方C库,其匿名结构类似于
typedef struct
     {
      ...
      }A;

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

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

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

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

我试过了 :

typedef struct A A;

要么

struct A;

并且

typedef A A;

出于好奇.

但是,这会导致重新定义类型的编译时错误.
谢谢

解决方法

可悲的是,你运气不好.

A是未标记结构的typedef.并且您无法转发声明,因为您无法直接引用该结构.

你可以更改生成器,以便输出typedef struct A {…} A;?然后它可以在C和C中很好地编译,你可以在C中转发声明.

否则,您有两个选择:1.#include包含结构声明的文件. 2.手动复制结构.显然(1)更为可取.

原文地址:https://www.jb51.cc/c/239500.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐