网站大量收购闲置独家精品文档,联系QQ:2885784924

extern声明外部结构体.docx

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在extern声明外部结构体变量时,遇到问题如下:a.c文件structSTRUCT_PLC_MDL_ProductInfo {Uint16 ManufacturerID;// 路由模块厂商代码Uint16 ModelID;// 路由模块芯片代码union { Uint8 BS[3];struct { Uint8 YY;// 年BCD码 Uint8 MM;// 月BCD码 Uint8 DD;// 日BCD码 } bytes;} VersionDate;// 路由模块版本日期Uint16 VersionID;// 路由模块版本号Uint8 COMType;// 路由模块通信方式Uint8 CH_NUM;// 路由模块信道个数Uint8 ProductID[6];// 路由模块生产编号Uint8 STR_PMType[10];// 路由模块类型型号(ASCII码)Uint8 STR_ProductDate[10];// 路由模块生产日期(ASCII码)Uint8 STR_PMCopyRight[32];// 路由模块版本信息(ASCII码)Uint8 STR_PMManufacturer [32];// 路由模块厂商信息(ASCII码)};conststructSTRUCT_PLC_MDL_ProductInfoPLC_MDL_ProductInfo = {\0x7068, 0x6463, {0x11, 0x02, 0x03}, 0x0000, 0x02, 0x01, \{0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, PLR-M1.0 , 2011-02-10, \路由模块版本信息, \路由模块厂商信息 };a.h文件externconststructSTRUCT_PLC_MDL_ProductInfoPLC_MDL_ProductInfo;b.c文件#include “a.h”Uint16 a;a = PLC_MDL_ProductInfo.ModelID;编译出错,提示a.h文件中的PLC_MDL_ProductInfo必须是一个结构体或者共用体。于是就很困惑:按之前的了解,extent声明外部变量不都是这样写的吗,直接声明就行了,在a.h中声明变量PLC_MDL_ProductInfo,然后在b.c中包含头文件a.h,不就可以用变量PLC_MDL_ProductInfo了吗?然而这里确报错了。最后,经过询问别人,查询资料,知晓大概原因:之前的extern声明变量遇到的都是基本类型的外部变量,然而这里确是声明的外部变量却是构造类型(结构体)类型。问题就出在这里。a.h中虽然声明了结构体变量PLC_MDL_ProductInfo,但是却没有该结构体的定义实体,所以编译器就报错了。于是改动如下:a.c文件#include “a.h”conststructSTRUCT_PLC_MDL_ProductInfoPLC_MDL_ProductInfo = {\0x7068, 0x6463, {0x11, 0x02, 0x03}, 0x0000, 0x02, 0x01, \{0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, PLR-M1.0 , 2011-02-10, \路由模块版本信息, \路由模块厂商信息 };a.h文件structSTRUCT_PLC_MDL_ProductInfo {Uint16 ManufacturerID;// 路由模块厂商代码Uint16 ModelID;// 路由模块芯片代码union { Uint8 BS[3];struct { Uint8 YY;// 年BCD码 Uint8 MM;// 月BCD码 Uint8 DD;// 日BCD码 } bytes;} VersionDate;// 路由模块版本日期Uint16 VersionID;// 路由模块版本号Uint8 COMType;// 路由模块通信方式Uint8 CH_NUM;// 路由模块信道个数Uint8 ProductID[6];// 路由模块生产编号Uint8 STR_PMType[10];// 路由模块类型型号(ASCII码)Uint8 STR_ProductDate[10];// 路由模块生产日期(ASCII码)Uint8 STR_PMCopyRight[32];// 路由模块版本信息(ASCII码)Uint8 STR_PMManufacturer [32];// 路由模块厂商信息(ASCII码)};externconststructSTRUCT_PLC_MDL_ProductInf

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档