【问题标题】:error C2016: C requires that a struct or union has at least one member (while compiling Bonjour)错误 C2016:C 要求结构或联合至少有一个成员(编译 Bonjour 时)
【发布时间】:2013-10-25 12:44:57
【问题描述】:

我已经按照这个答案下载了 Bonjour - https://stackoverflow.com/a/19585202/492336

我正在尝试使用 VS2008 为 Windows 编译它,但出现此错误:

错误 C2016:C 要求结构或联合至少有一个成员

错误在mDNSEmbeddedAPI.h,代码中这个地方:

#define NSEC_MCAST_WINDOW_SIZE 32
typedef struct
{
    //domainname *next;
    //char bitmap[32];
} rdataNSEC;

由于这是 Apple 发布的知名库,我很惊讶它无法编译,前提是他们将其作为 Visual Studio 项目提供。

是不是因为我用的是VS2008?最初发布的项目文件是针对旧版本的 - 我认为是 VS2005?

【问题讨论】:

  • 你有没有想过这个问题?除了上述错误之外,我在尝试在 Visual Studio 中编译 mDNSResponder 时遇到各种错误。有什么诀窍吗?
  • @TTar 我做到了,最后,是的,我什至把项目埋在某个地方。但是,如果您遇到问题,请在新帖子中询问。

标签: c visual-studio-2008 bonjour


【解决方案1】:

代替

typedef struct
{
    //domainname *next;
    //char bitmap[32];
} rdataNSEC;

你应该使用

 typedef struct rdataNSEC rdataNSEC;
 struct rdataNSEC{ };

【讨论】:

    【解决方案2】:

    来自 rdataNSEC 声明上方的 cmets(在 mDNSEmbeddedAPI.h 中):

    // ... The following is just a palceholder
    // and never used anywhere.
    

    那么为什么不把声明注释掉呢?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-14
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      • 2013-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多