精易论坛

标题: 易语言自制`通用型`一处传参小坑 请注意避免 [打印本页]

作者: 鱼刺    时间: 2020-12-15 14:46
标题: 易语言自制`通用型`一处传参小坑 请注意避免
本帖最后由 鱼刺 于 2020-12-15 15:02 编辑
  
' 自制通用型 一般多用在 DLL传参/指针传参 省去了重复声明多个一样功能的DLL/函数的步骤
通用型调用1 (地址 + 偏移)  ' !!错误
通用型调用1 (地址 + 123)  ' !!错误
' 自制通用型 传参时 请不要进行这种花里胡哨的运算 否则你将会很困扰
临时地址 = 地址 + 偏移  ' 真要进行额外的运算 请赋值给一个变量
通用型调用1 (临时地址)  ' !!!正确 没毛病
通用型调用1 (到整数 (地址 + 偏移))  ' !!!正确
' 直接相加编译器会转换成长整数 双精度小数,除非函数中参数已经指定了了数据类型
子程序名返回值类型公开备 注
通用型调用1  
参数名类 型参考可空数组备 注
参数1通用型如果你也想使用这个通用型 请选中并复制这个参数 粘贴到你的代码的相应位置 (注意 中途如果粘贴到TXT文本再进行复制 会无效  只有直接复制粘贴到易语言里 才有用)
变量名类 型静态数组备 注
P整数型 
' P = _取变量数据指针 ()




通用型.e (3.21 KB, 下载次数: 188)



作者: 350246356    时间: 2020-12-15 14:55
到整数(i + j) ;这样应该也行

直接相加编译器会转换成长整数 或 双精度小数,除非函数中参数已经指定了了数据类型
作者: 飘在空气里    时间: 2020-12-15 15:21
看到几个大佬的源码,也看到过这个通用型,很奇怪这个问题。 为什么通用型复制就可以用?自己写却不行, 是易语言留有的某些机制吗?还是这个复制的通用型做了什么处理呢?
作者: 波哥野结衣    时间: 2020-12-15 15:39
通用型都是骚操作,基本不咋用 = =
作者: 福仔    时间: 2020-12-15 17:25
如果你明确的知道你的通用型是干嘛的, 你可以选择不勾选参考, 不然建议都勾选参考
勾选参考传递过来的都是指针, 都是4个字节, 可以直接获取参数的指针然后读数据, 缺点就是不支持接收函数的返回值
如果不勾选参考的话, 可以传递函数的返回值, 就如你上面的代码, 相加返回的是双精度, 那这个参数是占用了8个字节, 而不是4个字节

不勾选参考需要特别处理传递参数的长度, 但是支持传递函数的返回值
勾选参考之后船渡的参数长度都固定是4个字节, 但是不支持传递函数的返回值, 但是我不觉得这个是问题

两个建议, 1. 不使用通用型,改成用整数型, 2. 所有通用型都勾上参考, 并写好备注不支持函数返回值, 只支持立即数和变量
立即数就是常量, 地址不会改变, 变量的话只要子程序没返回地址也不会变
而函数的返回值他就是个临时对象, 他的生命周期只有在那一行代码上, 还没等传递到函数里就已经释放了
作者: 鱼刺    时间: 2020-12-16 11:48
福仔 发表于 2020-12-15 17:25
如果你明确的知道你的通用型是干嘛的, 你可以选择不勾选参考, 不然建议都勾选参考
勾选参考传递过来的都是 ...

通用型 一般都是用在 传递指针 比如子程序指针或整数型地址指针 用通用型即可少声明一次  
再者就是DLL的传参 同样的用法
发这个帖也是提醒下用到了通用型的新手 以免浪费时间寻找爆炸原因
作者: afasfasfasfasdf    时间: 2021-1-21 17:18
66666666666666
作者: kanhaiyouyue    时间: 2021-11-11 13:16
666666666666666666666
作者: 一生几擦肩    时间: 2021-11-18 19:18
针传参 省去了重复声明多个一样
作者: 一生几擦肩    时间: 2021-11-18 19:18
不太懂呢试试水
作者: kolins007    时间: 2021-12-23 07:12
谢谢 楼主说明分享
作者: Esma001    时间: 2022-2-14 17:53

支持开源~!感谢分享
作者: quary888    时间: 2022-3-16 11:33
谢谢楼主分享!!! 好人一生平安!!!
作者: jtucar    时间: 2022-3-17 22:14
吆西吆西吆西
作者: zhi088    时间: 2022-4-8 16:00
谢谢楼主分享!!! 好人一生平安!!
作者: xu1230    时间: 2022-5-6 22:58

谢谢楼主分享!!! 好人一生平安!!
作者: kirisame    时间: 2023-4-27 23:39
tfssssssssssssssss
作者: 新月才子2    时间: 2023-5-15 07:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: pt1314    时间: 2023-10-5 10:46
谢谢楼主

作者: xiaole283    时间: 2023-11-23 20:48
调用子程序的通用型参数也是这个梗
作者: benbenseo    时间: 2023-12-26 09:02
谢谢楼主
作者: gqohui455    时间: 2024-7-27 21:16
谢谢楼主
作者: qq420345437    时间: 2024-8-8 05:31
直接相加编译器会转换成长整数 ,记住了!
作者: q1767995506    时间: 2024-8-23 15:24
感谢分享感谢分享感谢分享感谢分享
作者: A空白B    时间: 2025-1-8 23:00
感谢分享感谢分享感谢分享感谢分享
作者: po1718    时间: 2025-2-11 10:29
YYDS~!YYDS~!
作者: Cuer    时间: 2025-6-10 02:57
水一下币。。。。。。。




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4