|
![]() | 作者: kert_t8 [kert_t8]
![]() |
登录 |
我定义这样两个结构和这样一个函数代码: 我在调用的时候使用 代码: 这样会有什么样的危险呢?(假设我能够绝对保证struct b比struct a不少并且前半部分完全一样,a是b的子集) 另外,我单独编译一个这样的简单程序没有问题没有报警,但是在编译另外一个程序的时候(当然那个结构就比上面这个复杂多了,但是我用软件compare过两部分代码,前半部分绝对一样)会有报警说两个结构不兼容,我想请问为什么会有这种区别。我分析有可能两种原因,一是编译选项不同,导致同样的问题一个报警一个不报警,二则有可能是我的另外一个复杂的程序两个结构却是不匹配。如果是第二种情况就还要再想办法,所以我想弄清楚,以便决定是否忽略这个报警。 第三,这样做其实也是不方便的,因为人为的错误可能会导致a和b的结构不匹配,我其实就是想做一个struct的派生,不知道还有什么办法可以做 [此贴被 月之御者(kert_t8) 在 12月26日20时09分 编辑过] |
地主 发表时间: 06-12-26 20:08 |
![]() | 回复: virgoshaka [virgoshaka] ![]() |
登录 |
看你的意思是要用struct b 类的对象来做struct a 类的操作?而struct b 是struct a 的派生,既然这样,就把func1()作为基类函数就可以了啊,调用的时候用b.func1() 当然,这是C++的方法,用C我就不知道了,呵呵 另外,你调用代码好像写错了哦,第二行是 func1((struct a *) &sb); 吧? [此贴被 处女座的沙加(virgoshaka) 在 12月27日01时53分 编辑过] |
B1层 发表时间: 06-12-27 01:48 |
![]() | 回复: kert_t8 [kert_t8] ![]() |
登录 |
嘿嘿,对对,应该是&sb,我sb了 ![]() 我就是问用c怎么做 |
B2层 发表时间: 06-12-27 10:01 |
![]() | 回复: NetMelody [mmgg00] ![]() |
登录 |
简单的说就是传值和传址的区别 |
B3层 发表时间: 06-12-28 12:12 |
![]() | 回复: ypy [ypy] ![]() |
登录 |
这样写应该没问题的啊 你把出错的两个结构发上来看看 |
B4层 发表时间: 07-01-05 13:50 |
![]() | 回复: wojiaowoai [wojiaowoai] ![]() |
登录 |
好好学习~ |
B5层 发表时间: 07-07-01 17:28 |
![]() | 回复: kert_t8 [kert_t8] ![]() |
登录 |
我用的时候没出错,真出错我也就不用了,我问的是大概会有些什么错误,因为我以前很少使用这样的方法来做,不知道会有什么样的隐患 ![]() 还有,更正一下,struct b{}的结构其实应该写成 代码: |
B6层 发表时间: 07-07-02 11:59 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号