详谈VB自定义类型参数的传递

开发 后端
这里介绍VB自定义类型参数的传递,用户自定义类型在VB中是一种重要的数据类型,它为编程者提供了很大的灵活性,使开发人员可以根据需要构造自己的数据结构。

本文向大家介绍VB自定义类型参数的传递,可能好多人还不了解VB自定义类型参数,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。

VB自定义类型参数的传递

用户自定义类型在VB中是一种重要的数据类型,它为编程者提供了很大的灵活性,使开发人员可以根据需要构造自己的数据结构。它相当于C/C++中的结构类型(structure)。在VB中,允许程序员以传址的方式将自定义数据类型参数传入动态库,DLL过程也可以将修改后的参数返回VB程序。但是,在VB中仍然不支持以传值的方式传递VB自定义类型参数。

传递VB自定义类型参数时,必须确保VB中的数据类型的成员与动态库中的结构成员是一一对应的,所占空间也必须严格一致。这里所说的一一对应,不仅是指VB 中的所有结构成员在动态库的结构中都必须有对应的元素,而且它们在数据结构中定义的顺序也必须严格一致,这是VB中使用的"数据结构成员对齐方式"决定的。在VB 中,数据结构使用双字对齐方式(4-byte alignment),因此,在用户自己生成用于VB调用的动态连接库时,也必须把编译选项"structure member alignment" 设为4字节(如前文所述)。

所谓结构成员对齐方式是指一个数据结构内部,其成员的排列方式。譬如,在VB中,其对齐方式是4字节,这就好象在一个数据结构内部分成了很多个4字节大小的小单元,如果相邻两个或多个数据成员的大小可以放在一个单元中,那么就放在一起;否则这些小单元中可能 会出现未用的空字节。我们来看下面一个数据类型:

  1. Type TestType  
  2. m1 as Integer  
  3. m2 as Byte  
  4. m3 as Long  
  5. End Type 

它的三个成员的大小加起来是2+1+4=7。但是,由于m1和m2的字节总长度是3,小于 4,它 们就存放于一个单元中;但该单元剩下的一个字节不足以放下一个Long型的成员m3,于是m3 就被放在下一个单元中,它们之间就有了一个未用的空字节;因此,整个结构所占实际长度是8 字节。同理,如果将m3和m2的位置交换一下,它所占的尺寸就变成了9字节。可见,成员在结构 中的声明顺序也是非常重要的。

另外,在VB 中还可以把一个函数的指针传递到动态库中,方法也并不复杂。但笔者强烈建议***不要这么做,因为这样一来VB 应用程序就几乎完全丧失了它所应有的安全性。如果 确实需要传递函数指针的话,那么还是编一个C/C++ 的程序来完成这项工作吧。以上介绍VB自定义类型参数的传递。

【编辑推荐】

  1. VB.NET字符串数组全面分析
  2. 讨论VB.NET简单数据类型
  3. VB.NET使用Alias子句简介
  4. 叙述VB.NET创建控件数组
  5. VB.NET Declare语句学习笔记
责任编辑:佚名 来源: weaseek
相关推荐

2010-01-15 15:26:46

VB.NET自定义类型

2009-11-10 17:12:22

VB.NET自定义类型

2023-10-31 09:10:39

2010-01-18 15:43:35

VB.NET自定义属性

2013-05-02 14:08:18

2009-08-12 14:53:50

C#类型转换函数

2023-11-01 08:01:04

SpringWeb容器

2009-10-23 17:03:18

VB.NET事件编程

2015-02-12 15:33:43

微信SDK

2023-11-14 10:05:52

Java开发工具

2012-02-21 14:04:15

Java

2022-11-06 21:50:59

Python编程函数定义

2015-01-14 15:06:48

定义相机

2021-03-16 10:39:29

SpringBoot参数解析器

2022-07-11 10:37:41

MapPart集合

2015-02-12 15:38:26

微信SDK

2020-10-20 09:27:48

Python开发数据类型

2022-06-20 08:26:39

Spring容器类型转换

2016-11-16 21:55:55

源码分析自定义view androi

2011-06-23 10:49:13

Qt 自定义信号
点赞
收藏

51CTO技术栈公众号