开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 7008|回复: 28
打印 上一主题 下一主题
收起左侧

[图文资料] 易语言自制`通用型`一处传参小坑 请注意避免

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




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


评分

参与人数 2好评 +2 精币 +4 收起 理由
lanmei + 1 + 2 YYDS~!
象山海鲜 + 1 + 2 奉上小小红包希望笑纳

查看全部评分


本帖被以下淘专辑推荐:

结帖率:100% (27/27)

签到天数: 5 天

沙发
发表于 2020-12-15 14:55:16 | 只看该作者   福建省福州市
到整数(i + j) ;这样应该也行

直接相加编译器会转换成长整数 或 双精度小数,除非函数中参数已经指定了了数据类型

点评

确实 到整数() 就OK   河南省郑州市  发表于 2020-12-15 15:00
回复 支持 反对

使用道具 举报

结帖率:99% (68/69)
板凳
发表于 2020-12-15 15:21:34 | 只看该作者   广西壮族自治区南宁市
看到几个大佬的源码,也看到过这个通用型,很奇怪这个问题。 为什么通用型复制就可以用?自己写却不行, 是易语言留有的某些机制吗?还是这个复制的通用型做了什么处理呢?

点评

复制是直接复制文件结构的***(连类型也一起复制过来),书写只是文本,因为自带不支持,(装个eav支持库就可以直接书写了)   福建省福州市  发表于 2020-12-15 15:41
回复 支持 反对

使用道具 举报

结帖率:88% (7/8)
地板
发表于 2020-12-15 15:39:56 | 只看该作者   重庆市重庆市
通用型都是骚操作,基本不咋用 = =
回复 支持 反对

使用道具 举报

结帖率:100% (9/9)

签到天数: 4 天

地下
发表于 2020-12-15 17:25:38 | 只看该作者   广东省揭阳市
如果你明确的知道你的通用型是干嘛的, 你可以选择不勾选参考, 不然建议都勾选参考
勾选参考传递过来的都是指针, 都是4个字节, 可以直接获取参数的指针然后读数据, 缺点就是不支持接收函数的返回值
如果不勾选参考的话, 可以传递函数的返回值, 就如你上面的代码, 相加返回的是双精度, 那这个参数是占用了8个字节, 而不是4个字节

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

两个建议, 1. 不使用通用型,改成用整数型, 2. 所有通用型都勾上参考, 并写好备注不支持函数返回值, 只支持立即数和变量
立即数就是常量, 地址不会改变, 变量的话只要子程序没返回地址也不会变
而函数的返回值他就是个临时对象, 他的生命周期只有在那一行代码上, 还没等传递到函数里就已经释放了
回复 支持 反对

使用道具 举报

签到天数: 2 天

6
 楼主| 发表于 2020-12-16 11:48:17 | 只看该作者   河南省郑州市
福仔 发表于 2020-12-15 17:25
如果你明确的知道你的通用型是干嘛的, 你可以选择不勾选参考, 不然建议都勾选参考
勾选参考传递过来的都是 ...

通用型 一般都是用在 传递指针 比如子程序指针或整数型地址指针 用通用型即可少声明一次  
再者就是DLL的传参 同样的用法
发这个帖也是提醒下用到了通用型的新手 以免浪费时间寻找爆炸原因
回复 支持 反对

使用道具 举报

结帖率:88% (7/8)

签到天数: 4 天

7
发表于 2021-1-21 17:18:59 | 只看该作者   浙江省嘉兴市
66666666666666
回复 支持 反对

使用道具 举报

结帖率:77% (55/71)

签到天数: 2 天

8
发表于 2021-11-11 13:16:51 | 只看该作者   湖北省武汉市
666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:100% (8/8)
9
发表于 2021-11-18 19:18:17 | 只看该作者   江苏省无锡市
针传参 省去了重复声明多个一样
回复 支持 反对

使用道具 举报

结帖率:100% (8/8)
10
发表于 2021-11-18 19:18:31 | 只看该作者   江苏省无锡市
不太懂呢试试水
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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