递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 6222|回复: 19
打印 上一主题 下一主题

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

[复制链接]

444

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
40334
跳转到指定楼层
楼主
发表于 2023-7-18 20:57:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 创世魂 于 2023-7-18 20:59 编辑

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


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

总之越复杂越好。。。。。。。。。


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

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

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


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





评分

参与人数 2金钱 +2 收起 理由
呵呵仙8 + 1 12楼,火山如何安全调用?
米粒 + 1 赞一个!

查看全部评分

安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

17

主题

431

帖子

4096

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4096
沙发
发表于 2023-7-19 01:11:43 | 只看该作者
好好好
回复

使用道具 举报

12

主题

299

帖子

2684

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2684
板凳
发表于 2023-7-19 10:45:17 | 只看该作者
擦,之前遇到过几次这样情况,可惜一时想不起来了。
回复

使用道具 举报

8

主题

123

帖子

745

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
745
地板
发表于 2023-7-19 10:59:04 | 只看该作者
出一个写办公软件插件的案例,不是辅Zhu(Waigua),是插件。
回复

使用道具 举报

40

主题

567

帖子

4060

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4060
5#
发表于 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[MAX_SPINDLE];        /* 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[MAX_AXIS*8];   /* offset value */  宏值得* 数值 的数组
} IODBZOR64; /* In case that the number of axes is MAX_AXIS, the number of data is 7 */
回复

使用道具 举报

15

主题

197

帖子

4229

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4229
6#
发表于 2023-7-19 21:03:42 | 只看该作者
本帖最后由 阿海 于 2023-7-24 13:38 编辑

我用现在的案例已经解决了火山结构体在嵌入代码的使用但是实际使用中C++用的是结构体数组来接收信息传递的,能否安排一个C++结构体数组与火山结构体数组的案例C++源码: WCHBleLib_MultiOS_V1.3.ZIP (10.71 MB, 下载次数: 6)
2.9. 设备枚举
void WINAPI WCHBLEEnumDevice(ULONG scanTimes, PCHAR DevIDFilter, BLENameDevID*
pBLENameDevIDArry, PULONG pNum);
该函数会在规定时间扫描附近设备并通过结构体数组返回扫描结果。
参数scanTimes是指定扫描时间,以ms为单位;
参数DevIDFilter是过滤名称字符串,如果为空则返回扫描到的所有设备;
参数pBLENameDevIDArry为扫描结果结构体数组,结构体定义如下
struct BLENameDevID
{
UCHAR Name[MAX_PATH];
UCHAR DevID[MAX_PATH];
int Rssi;
};
其中Name[MAX_PATH]是设备名;
DevID[MAX_PATH]是设备路径;
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[8];
BYTE Reserved[3];
} VCI_CAN_OBJ, *PVCI_CAN_OBJ;






回复

使用道具 举报

21

主题

102

帖子

1541

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1541
7#
发表于 2023-7-20 19:44:10 | 只看该作者
不是很复杂的嵌套结构数组

测试项目.rar (41.44 KB, 下载次数: 10)
回复

使用道具 举报

444

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
40334
8#
 楼主| 发表于 2023-7-23 08:52:09 | 只看该作者
阿海 发表于 2023-7-19 21:03
我用现在的案例已经解决了火山结构体在嵌入代码的使用但是实际使用中C++用的是结构体数组来接收信息传递的 ...

要有相关api或者相关cpp代码,便于参考编写。。
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

444

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
40334
9#
 楼主| 发表于 2023-7-23 08:52:42 | 只看该作者
fengyishen 发表于 2023-7-19 10:45
擦,之前遇到过几次这样情况,可惜一时想不起来了。

下次遇到了,来这个帖子发帖
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

444

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
40334
10#
 楼主| 发表于 2023-7-23 08:55:04 | 只看该作者
dengzf 发表于 2023-7-19 13:55
火山的 @视窗.结构类 中不支持使用文本型, 如何处理? 用指针吗下面这种呢?
#define MAX_SPINDLE     24     ...

不知道这个系统环境是指什么??火山里面有条件编译,可以定义多个相同的结构体,然后不同的条件加载不同的结构体。
就可以勉强实现你这个效果,但是不知道你这个环境不同具体是个啥。。
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-13 02:26 , Processed in 0.106870 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表