我不想再回答这问题,你自己google,当版主不能自满,对就是对,错就是错.
偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
我不想再回答这问题,你自己google,当版主不能自满,对就是对,错就是错.
还是那句话,不搞争论。
毕竟DOS系统调用、bios中断时代已经过去了……
其实我也怀念Turboc C呀,很精致的小玩意儿。
一本Turboc C实用大全仍珍藏怀中。
曾经那么钟爱C与asm混合编程……
9楼南大版主 你好!
void interrupt (* _Cdecl gtvect(int interruptno)) ();
这是在TC2.0编写的工控程序中取来的一条语句,这是一条函数原型声明语句,在TC2.0中能编译通过.
我现在是不明白具体意思,函数返回值是void,()是代表没有形参吗?函数名又是什么呢?
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);
}
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编辑过]