C与C++区别之 "..."与void
各位高手,
我在C下编的函数,在将原文件更名为C++后报2个错,
如:void interrupt (far *Old101Key)(void)
一是连接不过去,告诉我不能将...与void类型转换,
二是提示"old101key"没有定义,而不是"Old101Key"
将函数变为void interrupt (far *Old101Key)(...)后就一切正常了,这是为什么呀
编译器bc++3.1
问题点数:20、回复次数:8Top
1 楼villager(在黑暗的角落 忧郁的眼神注视着你)回复于 2003-08-04 02:27:25 得分 0
都说是VOID了你还搞一个返回值,当然出问题了Top
2 楼leeseon(leeseon)回复于 2003-08-04 04:10:15 得分 0
??Top
3 楼antijpn(antijpn)回复于 2003-08-04 04:27:34 得分 20
villager(为什么我这么绝顶聪明 却还是菜鸟?)
你在说什么?
给出old101key没有定义应该不是错在函数声明里面,而是在函数定义里面,你好好查一查(BC++不会不给错误行的行号吧?不要告诉我你不知道),把那个地方修改一下就行了
另外不知道你的什么void类型转换到底怎么回事,把代码贴出来看一下Top
4 楼cxjddd(又是花开时)回复于 2003-08-04 08:37:10 得分 0
有这样定义的吗?不知道是定义interrupt还是Old101Key。Top
5 楼njuhuangmy(茶)回复于 2003-08-04 08:57:52 得分 0
第二个 错误 ,定然 是 你在 变量列表里 申明了 Old...
但是,你在 程序体 里 使用了 old....
在 c 里 是 大小写 不区分 的
关于 第一个 ,没看懂
呜呜Top
6 楼rivershan(阿门)回复于 2003-08-04 09:25:52 得分 0
没看懂Top
7 楼njtu(天地不容)回复于 2003-08-04 09:28:33 得分 0
可能是函数的版本问题:
不过对下面函数的定义不大理解:
void interrupt (far *Old101Key)(void)
对far * 用的比较少!
Top
8 楼ma100()回复于 2003-08-04 20:34:27 得分 0
setvect(INTERRUPT_KEY , Old101Key);
setvect(INTERRUPT_AD , OldAdInterrupt);
setvect(INTERRUPT_RS2 , OldRs2Key);
setvect(INTERRUPT_KEY, New101Key);
setvect(INTERRUPT_AD , AdSample);
setvect(INTERRUPT_RS2, newrs2key);
//以上函数错误都相同,现将其中一个函数定义如下
//在函数定义中,我也是用大写的
//如下连接可通过,若将...换了void就不行了
//另外编译是通过的,连接不过所以没有错误行号
void interrupt far New101Key(...)
{
unsigned key ;
disable();
key = inportb(0x60);
if (key<=0x81) NewKey=key; if(key==0x81)
{
System_Exit=1;
}
key = inportb(0x61);
outportb( 0x61 , key );
outportb( 0x20 , 0x20 ) ;
enable();
}Top




