急!!!答者给分.关于函数模拟问题.

chrislois 2002-08-01 01:31:46
现新建函数模拟一些很复杂函数的功能,要求原型一致,怎么保证哪些自定义的多重嵌套类型参数值(内含指针)的模拟?
...全文
16 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
compassyuy 2002-08-02
  • 打赏
  • 举报
回复
学了不少!
chrislois 2002-08-02
  • 打赏
  • 举报
回复
Tommy():
函数就是对于特定的输入,得到特定的输出,如果对于相同的输入,有相同的输出的话,两个函数根本就是等价的了。如果可以抛开原来的复杂处理,用一个简单函数得到和原来函数一样的输入、输出,那直接用新的代替老的好了,何必还要原来的复杂函数呢?

像你这种情况,一般只能对一部分要模拟的输入,返回对应的结果,还有就是用一个简单的、精度较低的算法,得到一个近似的结果。


原来的复杂函数最终是不要的,新函数最终是原函数的子集.目前原函数也只是在原来的应用程序中调试比对用.而且原函数不是一层层的返回,倒是一层层的调用,所以短时间很难分析清楚.

step_by_step(脚印)说的对,只是嵌套调用层数太多,不好分析.我在此一贴,主要是征求各位的高见和捷径.


Tommy 2002-08-02
  • 打赏
  • 举报
回复
如果这样就没有什么好办法了。或者试试做Refactor,代码重构,把代码变得清晰一些,可能容易看一点。(我没试过,不过在一些文章中看到过有这样的做法)
kwok_1980 2002-08-02
  • 打赏
  • 举报
回复
int func(int &a)
{
//...
return (func2(&b));
}
你是不是一层层的返回啊?
我也不懂你的意思!
Jawan_lee 2002-08-02
  • 打赏
  • 举报
回复
不知所云
winco 2002-08-02
  • 打赏
  • 举报
回复
up
step_by_step 2002-08-02
  • 打赏
  • 举报
回复
基本上不可能,除非你先要了解原函数的流程,逻辑上理清了才会知道应该是什么返回值.
Tommy 2002-08-02
  • 打赏
  • 举报
回复
chrislois() :
那就叫替代吧!我的基本目标是新建的函数与原函数有相同的输入,输出,而忽视掉其处理过程.对于我上面的例子,请发表高见.

函数就是对于特定的输入,得到特定的输出,如果对于相同的输入,有相同的输出的话,两个函数根本就是等价的了。如果可以抛开原来的复杂处理,用一个简单函数得到和原来函数一样的输入、输出,那直接用新的代替老的好了,何必还要原来的复杂函数呢?

像你这种情况,一般只能对一部分要模拟的输入,返回对应的结果,还有就是用一个简单的、精度较低的算法,得到一个近似的结果。
chrislois 2002-08-02
  • 打赏
  • 举报
回复
是这样的,原函数所在程序能正常运行,但非常庞大.所以,我的想法是能不能通过调试得到原函数的返回值,因为原函数短时间很难分析清楚.对于简单类型的参数和返回值,比较容易发现.对复杂类型的呢?
samuelxp 2002-08-01
  • 打赏
  • 举报
回复
我想你是在编程时要使用一些未完成的函数。
你应该知道你那些函数会有什么返回值,什么返回值会使你的程序继续下去。
然后就可以直接return了(tommy说的)。
这也是很普遍的合作开发的方式。

还有一种方法是用宏。
tangss 2002-08-01
  • 打赏
  • 举报
回复
UP
vampireonline 2002-08-01
  • 打赏
  • 举报
回复
你的意思说的那么晦涩啊,凡是函数对于用户来说都可以当作一个功能接口而可以忽略处理过程的啦
chrislois 2002-08-01
  • 打赏
  • 举报
回复
那就叫替代吧!我的基本目标是新建的函数与原函数有相同的输入,输出,而忽视掉其处理过程.对于我上面的例子,请发表高见.
Tommy 2002-08-01
  • 打赏
  • 举报
回复
模拟?是不是根据输入,返回不同的值?这和函数是否复杂没有什么关系吧?模拟本身就是应该用简单的方法对做,比如用一系列的switch语句,为每个不同的输入返回一个假想的结果。
switch(i)
{
case 1: return &SomeElement;
case 2: return &OtherElement;
...
}

如果想和被模拟的函数有相同的行为,那就不是模拟了
chrislois 2002-08-01
  • 打赏
  • 举报
回复
先举个简单的例子吧!
如:
typedef int *Element;

Element A(int i)
{
...
}
该函数功能很复杂,里面又调用了很多重函数,为模拟该函数的功能,在被调用时,怎么可以替代它的返回值?
多谢!


Tommy 2002-08-01
  • 打赏
  • 举报
回复
不懂“自定义的多重嵌套类型参数值(内含指针)”。举个例子?
SHIZUMARU 2002-08-01
  • 打赏
  • 举报
回复
说清楚好不好?不明白你的意思。

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧