如何定义入口地址固定的函数

如题,假使我打算把函数my()的入口固定在100H地址上,用C怎么实现?我还想调用my()函数时不直接调用my()而直接转到100H这个地址上,用C怎么实现?(C如果困难... 如题,假使我打算把函数my()的入口固定在100H地址上,用C怎么实现?我还想调用my()函数时不直接调用my()而直接转到100H这个地址上,用C怎么实现?(C如果困难用C嵌入汇编也可!)大侠帮帮忙吧!
事实上我是打算用turboC图形化编程来编写一个鼠标按钮程序,我现在已经实现初始化按钮,然后画按钮,这两个函数!
在按钮消息响应的时候我打算这么写:"while(1){消息响应();}"消息响应()这个函数循环搜寻是否有按钮按下,有则跳转到相应函数,如果函数入口地址固定,则我就可直接给指针变量赋值,叫程序直接跳转到相应函数,这样初始化按钮,画按钮,按钮消息响应这三个函数就可以永久不变,我可以把它生成一个lib,而我主函数仅仅在调用初始化按钮,画按钮,按钮消息响应后加上按钮1的任务函数,按钮2的任务函数,按钮3的任务函数,......便可,这些函数的入口地址便是系统提供的固定地址,换句话说有点像C51的中断函数.不知道怎么实现?如果您有更好的方法我们可以多多交流!谢谢!(操作系统DOS)
再补充一点儿,如果固定函数的入口地址不大可能实现,能不能获取函数的入口地址,我固定函数名,在系统运行之初获取相应函数地址,如果没有相应的函数,跳过这个函数!这个功能能不能实现!
回复catm3 我想知道:for(循环)if exist fun_i funs[i]=fun_i,这个伪码怎么实现?
展开
 我来答
catm3
2008-11-12 · TA获得超过511个赞
知道小有建树答主
回答量:234
采纳率:100%
帮助的人:360万
展开全部
你说的for,我看出来你已经知道存在那些功能,但是还不知道某个功能是不是被实现了,下面又是一个例子:

FUN funs[16]={fun1,NULL,fun3};//假设我们知道最多也就16个功能,但是目前只有功能0和2被实现,功能1和其他的3~15都还没有实现

for(...)
{
int funCode;
...
if(funs[funCode]!=NULL)//如果不是NULL,说明对应的功能号被实现了
funs[funCode](...)//调用
}
---------------------------------------------------------

楼主,C语言是不应该干这件事的!

楼主你的需求实际上可以这样描述:
1 怎样才能根据输入条件来调用不同的函数
2 条件和函数是一一对应的,但是函数在哪是不确定的,例如可能是其他函数传进来的。

我举个简单例子来解决你的问题
typedef void (*FUN)(...);//参数列表和返回值自己填

//定义一些功能函数
void fun1(...)
{
printf("1\n");
}

void fun2(...)
{
printf("1\n");
}
....
//上面的注意了,参数列表和返回值要一样的

FUN funs[]={fun1,fun2,...};//把函数的指针放进数组,就像你C51的向量区,存放了许多函数的地址,这里最终放的也是地址,只不过等程序编译好了才知道是多少,

...//一堆代码

int funCode;//用来存放计算出来的功能代码,例如0表示fun1,1表示fun2
...//一堆超级复杂而且重要且不可逃避的代码之后,funCode被设为了某个值,这个这个值实际上是我精心而且故意设计为理解简单的小玩意,代表某个功能的代码。

funs[funCode](...)//调用功能函数(知道funCode需要精心设计了吧,funCode为0就调用了fun1),当然你也可以把funs传到某个函数,然他也像这样使用传进去的函数。
何处淬吴钩
2008-11-05 · TA获得超过5045个赞
知道大有可为答主
回答量:2947
采纳率:50%
帮助的人:2414万
展开全部
函数入口地址应该是不能自己确定的,应该是编译或执行(由操作系统分配)时确定的,但你可以定义一个指针指向函数,然后在100h里存储这个指针来实现这个功能
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高金山
推荐于2016-09-28 · TA获得超过1万个赞
知道大有可为答主
回答量:4101
采纳率:0%
帮助的人:1707万
展开全部
把函数my()的入口固定在100H地址上,不是靠编程来实现,而是要靠编译来实现

另外,你可以用函数指针来达到,跳转到固定地址,然后执行代码。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
12917736427c66b6
推荐于2016-08-20 · TA获得超过4.1万个赞
知道大有可为答主
回答量:7541
采纳率:83%
帮助的人:624万
展开全部
可以用函数指针来达到,跳转到固定地址,然后执行代码。
在数学中,一个函数是描述每个输入值对应唯一输出值的这种对应关系,符号通常为f(x)。在英文中读作f of x,但在中文中则常读作fx。其中x为自变量,y=f(x)为因变量(或称应变量)。包含某个函数所有的输入值的集合被称作这个函数的定义域,包含所有的输出值的集合被称作值域。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7c90db7
2008-11-05 · 超过14用户采纳过TA的回答
知道答主
回答量:109
采纳率:0%
帮助的人:29.5万
展开全部
我知道用const 可以声明一个常量,定义一个函数指针,让他的值等于100H,应该不行的,你参考下吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式