繁体   English   中英

为什么我不能正确使用'->'? 我知道这可能是一个简单的概念性错误,但不知道为什么

[英]Why am I not using '->' correctly? I know it is probably a simple conceptual mistake, but don't know why

抱歉,我不得不问这个问题,这让我有些尴尬。 我似乎无法发现为什么我在C语言中使用->命令是错误的。 我知道'x-> y'等效于'(** x).y',但是由于某些原因,我在上课的第一个项目中错误地使用了它。

从角度来看,我的项目中有28个错误; 26是来自这种误解,两个是来自带有C99模式之外的初始声明的for循环-这对我来说并不重要,因为我必须将此代码转移到Unix机器上以在此处进行编译,因此这些错误不会发生。不会发生。

我得到的具体错误是这样的:

C:\Users\Nick\Documents\School\CS449\Programs\Project 1\EXIF Viewer\main.c|78|error:invalid type argument of '->' (have 'struct tag')|

在这26个错误中,每个错误的结构都是这样,但有人说(有“结构头”),而有人说(有“结构标签”)。

我将在这篇文章的底部包括我的全部代码,但是相关的结构声明和调用是这样设置的:

struct tag the_tag;//The reused tag

^这是一个全局结构变量

struct header intro; //Bytes 0-19 of the program

^这是int main(argc,** argv){}中的本地结构头

给我这些错误的一些行是:

56:  else if(intro->endianness[0] != 'I')
74:  if(the_tag->tag_identifier == (0x010F))
78:  printf("Manufacturer: %s\n", the_tag->data);
98:  else if(the_tag->tag_identifier == (0x08769))
125: else if(tagger->tag_identifier == 0x8827)

有人可以解释我在C语言中对该解引用器的理解不正确的地方,为什么这些调用按我期望的那样工作? 我很困惑,我的Google /搜索技能对这次活动没有任何帮助。 谢谢您的帮助。

这是我的pastebin: http//pastebin.com/ck8ThFLG

a->b等效于(*a).b

由于intro的类型为struct header ,因此可以使用来轻松访问其成员. (例如) struct header*类型的intro_ptr变量需要->

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM