在进行FANUC开发的时候我们可以看到Focas中的函数返回的数据大部分都是FANUC自定义的数据类型,比如方法cnc_rdnodeinfo()中返回的是ODBNODE结构数据,其中定义了多种类型的数据。当用户调用该方法时即可通过ODBNODE实体中获取对应类型的数据。
工具/原料
结构体类型
方法/步骤
1
那么Focas在哪里定义了这些数据结构体呢,在开发文档中有个Fwlib32.h头文件,Focas将这些数据结构体集中定义在Fwlib32.h中,再加上对功能函数、数据接口的声明 ,所以我们在开发FANUC项目时都必须引入Fwlib32.h文件和Fwlib32.lib文件。
2
struct结构体类型 在C++中定义一个结构体还是很简单的,通过struct就来定义结构体类型。当我们需要使用到Dome时可以直接通过Dome来声明变量,比如Dome dome;,通过dome.a即可对该变量进行赋值或提取了。
4
typedef typedef为C语言中的关键字,为数据类型定义一个新名字(也叫别名,原名依旧有效)。可以是基本类型名称、数组类型名称、指针类型名称、枚举型名称以及自定义的struct结构体等数据类型名称,但是不能与auto、extern、static、register等关键字出现在同一个表达式中。当我们为结构体定义了typedef属性时,我们就可以通过该别名来定义结构体中的变量。
5
为什么要用typedef struct 前面我们看到C++中定义struct时很简单,只需在调用时初始化该变量即可。但是在C中调用有时需要通过struct 结构名 对象名来申明结构体对象,使用起来不够便捷。为了兼容C调用我们可以统一通过typedef来定义结构体,这样不管是C或C++都可以通过别名来调用。
6
多别名定义 在申明别名时我们可以为结构体同时定义多个别名,调用时用任何一个别名都可以使用,这个逻辑相当于对前一个别名再进行别名定义。通过typedef与结构体配合可以简化复杂类型的定义,使结构体的表达更加简洁,更具兼容性。