完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
当我试图将一个单独的文件中定义的结构嵌入到另一个结构中时,我会得到编译器错误。该堆栈溢出帖子详细描述了这个问题:这应该是可能的,但是对于XC8编译器似乎不起作用。我找了类似的话题,什么也没找到。谢谢。编辑:我不知道它的C89还是以后会很难找到关于这种情况的信息。
|
|
相关推荐
9个回答
|
|
你的链接不是因为你是一个新用户,我们可以假设“文件”是正确的头文件吗?XC8是ANSI C89兼容的,你在尝试新的东西吗?
|
|
|
|
有关如何以纯文本形式发布链接,请参阅my.sig,但是最好将代码和输出窗口中的错误消息都发布到代码标记中。
|
|
|
|
更新链接。这是可以理解的吗?
|
|
|
|
嗨,也要注意你的术语。在堆栈溢出页面中,在Fiel1.h中定义的不是结构,而是结构标签。标记最好在头文件中定义(正如您所做的);结构本身不应该在头文件中定义,而应该在.c源文件中定义。struct(ure)是实际分配给对象的内存;struct ure标记只是对结构类型中的成员的描述。您所追求的应该是可能的,但是我们需要确切地看看您做了什么。Jeff。
|
|
|
|
好,我做了一个关于出错的最小示例,编译器应该给出错误:/system.h:19:error:(198)未定义的结构/联合“foo”:test_main.ctest_main.h system.h。
|
|
|
|
你使用声明而不是定义的原因是什么?在这个讨论中,http://stackoverflow.com/./1675351/typedef-struct-vs-struct-definitions我看到了这个解释:“此外,一个结构有一个正向声明标签和一个定义的标签。大多数人不知道这一点,并使用前向声明标签作为定义标签。};他们刚刚使用forward声明来标记结构——所以现在编译器已经知道了——但是它不是实际定义的类型。编译器可以计算寻址——但是由于某些原因,这并不是打算使用的。使用这种声明形式的人必须总是在每次引用它时都加上“struct”,因为它不是正式的新类型。不是引用本身,只能用这种方式声明和定义:TyBuffsStult{Field1;…}myStruct;现在它是一个实际类型,当使用at时,您可以将其用作“myStruct”,而不必在它前面加上“struct”这个词。
|
|
|
|
我也看到你正在使用& lt;& gt;你自己的括号包括,这是不推荐的。您应该将本地头包含在“”中。那是什么?)在TestMy.H.和您的代码应该编译。当我们首先编译代码时,我们试图包括test_main,而test_main又首先包括system.h,所以您试图编译它,这使得问题显而易见:
|
|
|
|
嗯,我想举一个最小的例子,我不想把typedef的东西和我的实际问题混为一谈,我相信这与我的实际问题无关。在我的实际代码中,include文件的结构存在问题,它简化了我给出的示例,但是如果我重新构造它,它应该可以工作。
|
|
|
|
当几个位中的位是,包含顺序可能是重要的,并且可能没有顺序工作。
|
|
|
|
只有小组成员才能发言,加入小组>>
5237 浏览 9 评论
2026 浏览 8 评论
1950 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3201 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2253 浏览 5 评论
771浏览 1评论
659浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
589浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
671浏览 0评论
571浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 02:07 , Processed in 1.445889 second(s), Total 93, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号