编译错误:请求非结构或联合中的成员

2023-11-26

Edit: 由于问题已经解决,下面的代码已被修改为可以工作。

具体来说,(*hardwareList.next_item)->next最初是不带括号的(例如*hardwareList.next_item->next)并且编译器不理解它。

我正在尝试弄清楚为什么编译器会与我的 C 代码混淆。我正在尝试创建一个链接列表,用于存储所有项目以及指向最后一个“下一个”变量的地址的指针,以便于附加。

typedef struct {
  int recordNum;
  char toolName[25];
  int quantity;
  float cost;
} HardwareData;

typedef struct _HardwareListItem{
  HardwareData data;
  struct _HardwareListItem* next;
} HardwareListItem;

typedef struct _HardwareList {
  HardwareListItem* items;
  HardwareListItem** next_item;
} HardwareList;

HardwareList readFromFile(FILE* fp)
{
  char stopReading = 0;
  HardwareList hardwareList = {0};
  hardwareList.next_item = &hardwareList.items;
  do {
    *hardwareList.next_item = (HardwareListItem*)calloc(1, sizeof(HardwareData));
    if (*hardwareList.next_item == NULL)
    {
      fprintf(stderr, "OOM Reading File\n");
      fflush(stderr);
      exit(EXIT_FAILURE);
    }
    if (fread(&((*hardwareList.next_item)->data), sizeof(HardwareData), 1, fp) != 1) {
      free(*hardwareList.next_item);
      *hardwareList.next_item = NULL;
      stopReading = 1;
    } else {
      hardwareList.next_item = &((*hardwareList.next_item)->next);
    }
  } while(!stopReading);

  return hardwareList;
}

编译器说:

line 31: error: request for member 'data' in something not a structure or union
line 36: error: request for member 'next' in something not a structure or union

我猜问题是这段代码:*(hardwareList.next_item)->data

next_item是一个指向指针的指针,所以我的猜测是编译器将其读作*((hardwareList.next_item)->data)这当然行不通——指针在 C 中没有任何成员。

Try ((*(hardwareList.next_item))->data)以获得正确的取消引用顺序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编译错误:请求非结构或联合中的成员 的相关文章

  • 为什么相同的代码在同一台计算机上的执行时间可能不同?

    我是 C 编程新手 我编写了代码并希望获得它的运行时 这就是我所做的 每次运行代码时 我都会得到不同的运行时值 这样对吗 或者我的代码有问题吗 int main int argc char argv time t start end sta
  • 如何在 Visual Studio 2010 中增强 XAML 设计器?

    当我使用 XAML 设计器时 进入设计器和退出设计器是如此困难和缓慢 当我这样做时 Visual Studio 卡了一段时间 有什么方法可以增强 XAML 设计器和编辑器吗 Ant 保存 XAML 文件时非常慢 这通常意味着您可能有复杂的
  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • 使用 Unity 在构造函数中使用属性依赖注入

    好的 我在基类中定义了一个依赖属性 我尝试在其派生类的构造函数内部使用它 但这不起作用 该属性显示为 null Unity 在使用 container Resolve 解析实例后解析依赖属性 我的另一种选择是将 IUnityContaine
  • 如何读取扩展文件属性/文件元数据

    因此 我按照教程使用 ASP net core 将文件 上传 到本地路径 这是代码 public IActionResult About IList
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 向 Nhibernate 发出 SQL 查询

    如何将此 SQL 查询发送给 Nhibernate SELECT Customer name FROM Company INNER JOIN Customer ON Company CompanyId Customer CompanyId
  • 启动时出现 OData v4 错误:找不到段“Whatever”的资源

    我正在构建新的 v4 服务 一切进展顺利 直到我为新模型 实体添加了新控制器 并在启动站点进行测试运行时收到此错误 控制器似乎编码正确 就像其他控制器一样 控制器 CustomersOData 中的操作 GetFeed 上的路径模板 Cus
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • XamlReader.Load 在后台线程中。是否可以?

    WPF 应用程序具有从单独的文件加载用户控件的操作 使用XamlReader Load method StreamReader mysr new StreamReader pathToFile DependencyObject rootOb
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • 如何在 Blackberry Cascades 中显示具有特定号码的电话板

    我正在使用带有 C QT 和 QML 的 Blackberry Cascades 10 Beta 3 SDK 以及 Blackberry 10 Dev Alpha Simulator 和 QNX Momentics IDE 并且我正在尝试实
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当

随机推荐

  • 如何创建一个在单击时增加计数器的按钮?

    我正在尝试制作一个按钮 单击时计数器的值会增加 1 然而 我的代码似乎不起作用 var count 1 var button document querySelector increment button addEventListener
  • 如何使用 Spring 和 Tomcat 设置加载时编织,而不在命令行上使用 -javaagent

    我使用的是Spring 3 2 9 Tomcat 6 0 44 当部署在 Tomcat 上时 我正在尝试配置应用程序的 Spring 检测提供程序 例如 spring instrumentation jar 以进行加载时编织 我有一个不使用
  • 将 Twitter 数据索引到 ElasticSearch 中:已超出索引中总字段 [1000] 的限制

    我有一个系统可以将 Twitter Stream 索引到 Elasticsearch 中 它已经运行了几个星期了 最近出现了一个错误 内容如下 Limit of total fields 1000 in index dev tweets h
  • 改变Javascript中类的CSS?

    我有一堂课的显示设置为none我现在想在 Javascript 中将其设置为inline我知道我可以用id with getElementById但是在课堂上最干净的方法是什么 You can这样做 实际上改变与类相关的样式规则 使用sty
  • 如何对 NSURLConnection Delegate 进行单元测试?

    如何对我的 NSURLConnection 委托进行单元测试 我创建了一个符合不同协议的 ConnectionDelegate 类 以将来自网络的数据提供给不同的 ViewController 在我深入之前 我想开始编写我的单元测试 但我不
  • 无法使用 --module-source-path 解析模块

    跟进如何定义对未知模块的合格导出 我已经发布了一个testcase有两个模块 core and plugin core尝试将包暴露给plugin使用合格的导出 但编译器抱怨plugin不存在 根据艾伦 贝特曼的建议 我尝试添加 module
  • 如何在 WatchOS 上构建带有音频反馈的锻炼应用程序?

    我正在 WatchOS 上构建一个非常简单的锻炼应用程序 它的功能之一是在训练期间提供音频反馈 当显示屏打开时 我可以播放文件 但当显示屏变暗时 手表不会播放我的文件 有人可以查看我的 swift 代码并帮助我找出我缺少的内容吗 这是我的扩
  • 防止第二个传奇

    我有一个 ggplot 它还显示一个图例 ggplot dt m aes x pct on OAC cont y Number of Practices fill Age Group geom bar stat identity posit
  • 如何修复自定义 github 页面域上的 ERR_TOO_MANY_REDIRECTS?

    所以我一天前在 namecheap 上设置了自定义域的 github 页面没有问题 然后我尝试通过github新增加的页面对https的支持切换到Https 经过太多的挫折后 我切换到 CloudFlare for Https 但现在遇到错
  • JavaScript 中的 Zip 数组?

    我有 2 个数组 var a 1 2 3 var b a b c 我想要得到的结果是 1 a 2 b 3 c 这看起来很简单 但我就是想不出来 我希望结果是一个数组 其中两个数组中的每个元素都压缩在一起 Use the map方法 var
  • 将电话号码与 Firebase 网页版中的 Facebook 和 Gmail 帐户关联

    我正在使用 Firebase 服务在 React 中创建一个 Web 应用程序 我在登录屏幕上登录了 Google 和 Facebook 登录后用户可以选择链接他们的手机 我使用 Firebase电话验证为了这 用户已经签名 然后他们使用手
  • DB单元应该忽略行的顺序

    有没有办法告诉 DB Unit 忽略行比较的顺序 我的问题是 我不知道行将以何种顺序写入数据库 但 DB Unit 强迫我给出一个有序列表 我想要 dbunit 做的是 检查数据库中的行数和预期数据集是否匹配 已解决 开箱即用 检查每行是否
  • 当代码编译良好时,Resharper“无法解析符号”[重复]

    这个问题在这里已经有答案了 我相信 错误消息与Serilog具体来说 而是因为代码 程序集 包的特定结构 修饰符等 所以 问题是Resharper显示错误 并且代码 来自引用的程序集 无法导航到 Visual Studio导航 通过Go t
  • jQuery.fn.load() 已弃用?

    jQuery fn load 在 jquery 3 X X 中已弃用 我把文档搞得一团糟 我的代码是 myDiv load mypage html 如何将 mypage html 加载到 myDiv 中 你的代码是正确的 这加载方法您使用的
  • python-requests:获取响应内容的头部而不消耗全部内容

    使用 python requests 和 python magic 我想测试 Web 资源的 mime 类型 而不获取其所有内容 特别是如果该资源恰好是 ogg 文件或 PDF 文件 根据结果 我可能决定全部获取 然而 在测试 mime 类
  • 如何在同一选择器上使用“&”和标签

    我正在尝试编写一个嵌套选择器 它选择具有特定属性的特定标签 例如 li 要选择此选项 li foo bar 可以 但我想把它嵌套在下面 foo bar 使用scss 符号 因为我还有其他东西 foo bar 属性 例如 div class
  • 用于过滤 @OneToMany 关联结果的注释

    我有两个表之间的父 子关系 以及我的 Java 类中的相应映射 这些表格大致如下所示 A ref number stuff varchar2 4000 B a ref number other number foo varchar2 200
  • 使用 React 动态加载样式表

    我正在构建一个 CMS 系统来管理营销登陆页面 在 编辑登陆页面 视图上 我希望能够加载用户正在编辑的任何登陆页面的关联样式表 我怎样才能用 React 做这样的事情呢 我的应用程序是完全 React 同构的 运行在Koa 我的相关页面的基
  • 如何从 Chrome 中的文件输入中删除“未选择文件”工具提示?

    我想从 Google Chrome 中的文件输入中删除 未选择文件 工具提示 我发现 Firefox 中没有显示任何工具提示 请注意 我不是在谈论输入字段内的文本 而是在谈论将鼠标移到输入上方时出现的工具提示 我尝试过这个但没有运气 myF
  • 编译错误:请求非结构或联合中的成员

    Edit 由于问题已经解决 下面的代码已被修改为可以工作 具体来说 hardwareList next item gt next最初是不带括号的 例如 hardwareList next item gt next 并且编译器不理解它 我正在