【问题标题】:Why doesn't struct declaration compile in Android NDK?为什么 struct 声明不能在 Android NDK 中编译?
【发布时间】:2014-05-12 20:03:09
【问题描述】:

如何使用 Android NDK 编译结构?

以下声明(适用于 g++)

#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netdb.h>
#include <cstring>
#include <fstream>
#include <sstream>

//header construction here...
    private:
      struct sockaddr_in serv_addr;

给出错误:

error: field 'serv_addr' has incomplete type
struct sockaddr_in serv_addr;
                   ^

【问题讨论】:

  • 不需要现在花哨的android 标签。这很常见,请参阅@David 的回答!也可以在&lt;arpa/inet.h&gt;找到。
  • @MahonriMoriancumer - 您删除 C 标签的决定可能意味着您对问题所在有足够的信心来支持您声称它是 C++ 独有的并且不与 C 共享的说法,因此请提供您的答案。否则,编辑应该被恢复,因为目前唯一的答案实际上是适用于 C 的东西和 C++ 一样多。
  • 问题和答案确实同样适用于 C 和 C++。

标签: android c++ c struct android-ndk


【解决方案1】:

您需要添加#include &lt;netinet/in.h&gt;

【讨论】:

  • 您可能还提到了<arpa/inet.h>,正如我在评论中所建议的那样。我真的没有看到任何具体的 android 在这里。
  • 那为什么要用别的编译器编译呢?
  • gcc 和 g++ 都出现同样的错误(在删除私有和 C++ 头文件后,它是 C)
  • 也许如果你包含更多的代码片段可能会给出一些提示,但我最好的猜测是当你复制代码时你没有复制所有的标题?
  • 好的,使用提到的两个包含使其编译正确。我不知道为什么它编译之前没有包含(它不是复制/粘贴错误)。还是谢谢
猜你喜欢
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-17
相关资源
最近更新 更多