标题:从保留字interrupt到形参数目可变函数的讨论
只看楼主
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
得分:0 

我不想再回答这问题,你自己google,当版主不能自满,对就是对,错就是错.


偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-06-04 09:04
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
回复:(baidu)[QUOTE]baidu删除帖子《本帖子为回复帖...
以下是引用baidu在2006-6-4 9:02:00的发言:
baidu删除帖子《本帖子为回复帖子》,原因:以偏概全,只会搅乱初学者视线,没有对用户进行分值操作


非常可笑的举止

还是那句话,不搞争论。

毕竟DOS系统调用、bios中断时代已经过去了……

其实我也怀念Turboc C呀,很精致的小玩意儿

一本Turboc C实用大全仍珍藏怀中。

曾经那么钟爱C与asm混合编程……


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-04 09:09
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
/*查阅了一下
http://www.bc-cn.net/bbs/dispbbs.asp?boardID=5&ID=67854&page=2
有这么一篇东西
函数指针概念求定积分(复化Simpson法)*/
#include<stdio.h>
#include<math.h>
double f1(double x)/*f1(x)是被积函数1*/
{
return 1/(1+x*x);
}
double f2(double x)/*f2(x)是被积函数2*/
{
return sin(x);
}
double Simp(double a,double b,double (*fun)())
/*形参b,a是积分的上下限,函数指针fun指向被积函数*/
{
#define NUM 100 //越大越精
double Simp=0,dx=(b-a)/NUM;
int i;
double x1=a,x2=a+dx;
for(i=0;i<NUM;i++,x1=x2,x2+=dx)
Simp+=(fun(x1)+4*fun((x1+x2)/2)+fun(x2))/6*dx;
return Simp;
}
main()
{
/*用复化辛卜生法分别计算下列定积分
1 π
∫1/(1+x^2)dx ∫sin(x)dx
0 0
*/
double Pi=3.1415926535898;
printf("第一个定积分≈%lf\n",Simp(0,1,f1));
printf("第二个定积分≈%lf\n",Simp(0,Pi,f2));
}

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-04 09:19
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
得分:0 
现在是不是觉得自己错了?
错了,都错得不认得13楼了。

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-06-04 09:22
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
得分:0 
噢?不删了?

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-06-04 09:25
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
得分:0 
不删了?那我就走了

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-06-04 09:30
一叶知秋
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-6-3
得分:0 

9楼南大版主 你好!
void interrupt (* _Cdecl gtvect(int interruptno)) ();
这是在TC2.0编写的工控程序中取来的一条语句,这是一条函数原型声明语句,在TC2.0中能编译通过.

我现在是不明白具体意思,函数返回值是void,()是代表没有形参吗?函数名又是什么呢?

2006-06-04 19:51
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
得分:0 

1.保留字interrupt指示函数是一个中断处理函数。在调用中断处理函数的时候,所有的寄存器将会被保存。中断处理函数的返回时的指令是iret,而不是一般函数用到的ret指令。
2.getvect()根据中断号interruptno获取中断号为interruptno的中断处理函数的入口地址。

3.此函数原型声明在dos.h 180行

4.我想大既不会再有人删了这个贴子了
5.给个示例

#include "stdio.h"
#include "conio.h"
typedef void (*F)();

void fun();
void fun1();
F fun2(int i);


F (* TT(int i) )();
main()
{
TT(3)();
TT(1)();

}
void fun()
{
printf("This is fun.");

}
void fun1()
{
printf("This is fun1.");

}

F fun2(int i)
{
if(i==1)return fun;
else return fun1;
}
F (* TT(int i) )()
{
return (F (*)())fun2(i);
}


偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-06-04 22:45
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
以下是引用一叶知秋在2006-6-4 19:51:00的发言:

9楼南大版主 你好!
void interrupt (* _Cdecl getvect(int interruptno)) ();
这是在TC2.0编写的工控程序中取来的一条语句,这是一条函数原型声明语句,在TC2.0中能编译通过.

我现在是不明白具体意思,函数返回值是void,()是代表没有形参吗?函数名又是什么呢?

[回复]
1。老版主feng1256在3楼已经精炼地回答了你的主要疑问。遗憾的是,包括你在内的不少求教者似乎不够尊重他人辛辛苦苦为尔等撰写的回帖。
2。void interrupt (* _Cdecl getvect(int interruptno)) ();是TC编译器在头文件dos.h中列出的一个函数原型,函数名叫做gtvect,意思是“取中断向量”。该函数有1个形参,即
interruptno,意为“中断号”。由于“中断向量”是地址,所以该函数返回类型是指针
3。用什么来承接
getvect( interruptno )的返回值呢?请查阅一下Turbo C实用大全第363页所举的例子。

[此贴子已经被作者于2006-6-5 7:29:04编辑过]


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-05 07:19
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-05 09:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-69613-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.070618 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved