| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 860 人关注过本帖
标题:关于设置断点的setvect函数的疑惑,求大神呀!为难我几天了!!!
只看楼主 加入收藏
不忘
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-7-18
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:4 
关于设置断点的setvect函数的疑惑,求大神呀!为难我几天了!!!
void install (void interrupt (*faddr)())
{
    disable();
     setvact(0x1c,faddr);
    enable();
}这是一个程序中的一部分,编译的时候出错,说是::con't convert void (interrupt far*)()to  void (interrupt far*)(...)
这是在王士元的C高级程序设计上面的一个例子中的一部分。很疑惑。

我又把TC的setvectd的函数原型的例子看来一下。
其中的一个函数是void interrupt handLer(_CPPARGS)
接着是这样传递参数的setvect(INTR,handler);
希望比较懂的能够指导一下!
搜索更多相关主题的帖子: void convert enable 断点 
2012-07-23 23:49
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:20 
没用TC很久了,无法替你测试。照你给的信息看,标准的中断函数格式是有参数的,而你声明的install()形参却是没有参数的,原型不对,故编译无法通过。你照它的格式写void install (void interrupt (*faddr)(_CPPARGS))试试。

从参数_CPPARGS的形式看,这是C++的参数传递,你应该使用C++编译器编译这个程序,而不是用C编译器,注意程序的文件名是.cpp还是.c。而且,这种涉及中断的代码,是Turbo C++或Borland C++的扩展特性,可能与编译器版本有关。你查一查帮助。原则上,可变参数可以省略掉参数,但那是在实参中可以这样写,在形参中不能,C++编译器是用参数表来匹配对应定义函数的,原型不合,拒绝编译是有可能的事。

在Windows编程中,是不使用中断的,我不知道你弄这么古老的语法是怎么回事,除非你的应用环境始终是DOS。

授人以渔,不授人以鱼。
2012-07-24 04:24
不忘
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-7-18
收藏
得分:0 
恩,我用的却是都是dos环境,还要使用中断!
不过用TC++编c语言程序,和直接用tc2.0差别大吗?我感觉Tc++比tc2.0用着舒服一点!
2012-07-27 09:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
C++全兼容C,当然比纯C编译器好了。现在的C类编译器基本上都是C++,没有纯C的了。

授人以渔,不授人以鱼。
2012-07-27 12:25
不忘
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-7-18
收藏
得分:0 
谢版主
2012-07-28 08:43
快速回复:关于设置断点的setvect函数的疑惑,求大神呀!为难我几天了!!!
数据加载中...
 
   



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

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