创世魂 发表于 2023-7-18 20:57:35

【征集案例】现征集一个复杂嵌套的结构体c++代码

本帖最后由 创世魂 于 2023-7-18 20:59 编辑

现征集一个复杂嵌套的结构体案例,越复杂越好。征集到合适的结构体案例后届时会用火山将这个结构体使用案例写出来,用于丰富结构体使用案例。


要求如下:
1、存在多层结构体嵌套。
2、存在嵌套的同时还存在数组(不管是动态数组还是固定成员数组,又或者是数组还嵌套数组)
3、最好还存在“传址”。
总之越复杂越好。。。。。。。。。


除此之外,最好是微软api里面的案例,因为这个api写例子可以很快写完看到效果。

如果是第三库,需要提供开发文档,编译好的dll,以及是哪个函数存在结构体。。便于演示火山怎么编写调用。。(并不会将整个库封装,只会演示这个存在结构体的方法方法怎么写)

当然有能力的大佬,也可以自己写个cpp文件,c++代码中存在上述描述的这种复杂的结构体嵌套问题,并公开一个方法出来,方便演示火山如何调用。


本次案例吴总会亲自出马编写,所以希望有能力或者有相关api封装需求的都来积极发帖回复。。
当然不会使用嵌入式代码,而是用火山表格实现。





edu 发表于 2023-7-19 01:11:43

好好好

fengyishen 发表于 2023-7-19 10:45:17

擦,之前遇到过几次这样情况,可惜一时想不起来了。

yifan09 发表于 2023-7-19 10:59:04

出一个写办公软件插件的案例,不是辅Zhu(Waigua),是插件。

dengzf 发表于 2023-7-19 13:55:49

火山的 @视窗.结构类 中不支持使用文本型, 如何处理? 用指针吗下面这种呢?
#define MAX_SPINDLE   24    这个宏的值是根据系统加载环境不同, 自动判断加载哪一个的 , 它的值 4, 8 ,24
typedef struct odbact2 {
         short      datano;                /* spindle number */
         short      type;                /* dummy */
         long      data;      /* spindle data */
} ODBACT2 ;


还有这种, 宏值得* 数值 的数组
/* cnc_rdzofsr64:read work zero offset value(area specified) */
typedef struct iodbzor64 {
    short       datano_s;         /* start offset number */
    short       type;               /* axis number */
    short       datano_e;         /* end offset number */
    short       dummy;            /* dummy */
    REALDATA    data;   /* offset value */宏值得* 数值 的数组
} IODBZOR64; /* In case that the number of axes is MAX_AXIS, the number of data is 7 */

阿海 发表于 2023-7-19 21:03:42

本帖最后由 阿海 于 2023-7-24 13:38 编辑

我用现在的案例已经解决了火山结构体在嵌入代码的使用但是实际使用中C++用的是结构体数组来接收信息传递的,能否安排一个C++结构体数组与火山结构体数组的案例C++源码:
2.9. 设备枚举
void WINAPI WCHBLEEnumDevice(ULONG scanTimes, PCHAR DevIDFilter, BLENameDevID*
pBLENameDevIDArry, PULONG pNum);
该函数会在规定时间扫描附近设备并通过结构体数组返回扫描结果。
参数scanTimes是指定扫描时间,以ms为单位;
参数DevIDFilter是过滤名称字符串,如果为空则返回扫描到的所有设备;
参数pBLENameDevIDArry为扫描结果结构体数组,结构体定义如下
struct BLENameDevID
{
UCHAR Name;
UCHAR DevID;
int Rssi;
};
其中Name是设备名;
DevID是设备路径;
Rssi 为扫描到设备时的Rssi(信号强度)值;
参数pNum是指定扫描设备数量,并且在函数执行完会返回真是扫描到的设备数量。

还有这种结构体嵌套结构体的
VCI_AUTO_SEND_OBJ 结构体嵌套
typedef struct _VCI_AUTO_SEND_OBJ{
BYTE Enable;
BYTE Index;
DWORD Interval;
VCI_CAN_OBJ Obj;//报文
}VCI_AUTO_SEND_OBJ,*PVCI_AUTO_SEND_OBJ;

VCI_CAN_OBJ 结构体是 CAN 帧结构体,即 1 个结构体表示一个帧的数据结构。在发
送函数 VCI_Transmit 和接收函数 VCI_Receive 中,被用来传送 CAN 信息帧。

typedef struct _VCI_CAN_OBJ {
UINT ID;
UINT TimeStamp;
BYTE TimeFlag;
BYTE SendType;
BYTE RemoteFlag;
BYTE ExternFlag;
BYTE DataLen;
BYTE Data;
BYTE Reserved;
} VCI_CAN_OBJ, *PVCI_CAN_OBJ;






暴风 发表于 2023-7-20 19:44:10

不是很复杂的嵌套结构数组


创世魂 发表于 2023-7-23 08:52:09

阿海 发表于 2023-7-19 21:03
我用现在的案例已经解决了火山结构体在嵌入代码的使用但是实际使用中C++用的是结构体数组来接收信息传递的 ...
要有相关api或者相关cpp代码,便于参考编写。。

创世魂 发表于 2023-7-23 08:52:42

fengyishen 发表于 2023-7-19 10:45
擦,之前遇到过几次这样情况,可惜一时想不起来了。

下次遇到了,来这个帖子发帖

创世魂 发表于 2023-7-23 08:55:04

dengzf 发表于 2023-7-19 13:55
火山的 @视窗.结构类 中不支持使用文本型, 如何处理? 用指针吗下面这种呢?
#define MAX_SPINDLE   24   ...

不知道这个系统环境是指什么??火山里面有条件编译,可以定义多个相同的结构体,然后不同的条件加载不同的结构体。
就可以勉强实现你这个效果,但是不知道你这个环境不同具体是个啥。。
页: [1] 2
查看完整版本: 【征集案例】现征集一个复杂嵌套的结构体c++代码