C_and_CPP 板


LINE

※ 引述《VictorTom (鬼翼&娃娃鱼)》之铭言: : ※ 引述《tyc5116 (累人啊....)》之铭言: : : 恩....V大提供的方法我看的不是很懂....XDDD : : 有点复杂,一时间还看不太出来... : : 我目前做的东西是类似控制机台的人机介面,根据输入的指令不同 : : 他要驱动的机台动作或机台种类也不同 : : 可能版上相同背景的人不多,我换个方式来说 : : 一般我们在写程式前须要有流程图,再根据流程图写出所有的程式 : : 而目前想做到的是,让使用者在PC上画出流程图,便能产生相对应的程式码 : : 大概有这样的意思,而目前的对象是机器,所以会有我原来问的那种问题.. : : 大概就是这样吧.... : 使用func ptr array会遇到一个问题, 你的参数型态要一样才能宣告array... : (如果小弟这个观念错了, 就不用理会後面的文章了....^^||) : 那麽要让它宣告时是一样型态, 可是内容又照你实作的做, 就是强转型.... : Ex1: funcp[0]内部其实是处理两个int.... : main() : { : int x, y; // 给适当值. : (*func[0])((void*)&x, (void*)&y); : } : func[0]指到的func实体.... : funcInt(void* para1, void* para2) : { : int x = *(int*)para1, y = *(int*)para2; : 内容.... : } : Ex2: funcp[1]内部其实是处理两个double.... : main() : { : double x, y; : (*func[1])((void*)&x, (void*)&y); : } : func[1]指到的func实体.... : funcDouble(void* para1, void *para2) : { : double x = *(double*)para1, y = *(double*)para2; : 内容.... : } : Ex3: funcp[2]要混搭风.... : main() : { : char x; : float y[10]; : (*func[2])((void*)&x, (void*)y); : } : func[2].... : funcMix(void* para1, void *para2) : { : char x = *(char*) para1; : float y = (float*) para2; : } : 所以你会发现, 其实不同index里如果不同型态, code会满恶心的.... : caller与callee之间的sync完全是programmer(也就是你)要顾好的.... : 如果连回传型态都不同, 就要传入第三个参数来写回传值了.... : 如果连参数的数量都不同........我觉得你要换一个策略写code....XD : 如果不同func其实只有传入型态不同, 用func overloading就够了.... : 你可以写一堆func名字都一样, Ex: : func(int x, int y) : func(double x, double y) : func(char x, float *y)....etc : template的用法有待板上其他强者补完, 小弟C++不熟Orz : 以上, 因为是随手打的没有测过, 有漏误的也请板上大大指正<(_ _)> : == : 所以你要写flow chart -> code的automatic code generator?? 嗯 可以考虑试试这种方式 typedef struct { enum _PASS_TYPE type; union { struct pass_data_a; struct pass_data_b; ..... }pass_data; } pass; int main(void) { pass test; pass.type = _PASS_TYPE_A; pass.pass_data.pass_data_a = ...; return 0; } --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.250.140.195
1F:推 tyc5116:抱歉,这个程式码看的懂,但和原来的问题我连不起来...@@ 10/12 19:41
2F:→ VictorTom:就是用union把最大可能传的参数用pass这个结构包起来, 10/12 19:43
3F:→ VictorTom:然後搭配.type与.pass_data来存放参数吧; "搞刚"一点也 10/12 19:44
4F:→ VictorTom:可以搞个linked-list自己做不定常度的参数出来XD 10/12 19:44
5F:→ VictorTom:PS. 他这样的写法, 你传的参数就统一是pass那个型态了. 10/12 19:45
6F:→ VictorTom: 所以你的func ptr array就可以运作了, 当然, 每个 10/12 19:46
7F:→ VictorTom: array的内容你还是要caller/callee自己去刻/解析:) 10/12 19:46







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP