简单的DOS接口调用问题

star19678051 2010-03-15 01:31:21
做了一个简单的通过DOS接口从键盘回显一个字符
#include "dos.h"
//#include<stdio.h>
void init()
{
union REGS rin,rout;
rin.h.ah=0;
rin.h.al=0x12;
int86(0x10,&rin,&out);
}

void main()
{
init();
}

问题在于,REGS的结构不是在DOS.H中定义了吗?
但为何会出现这样的报错?
“rin”使用未定义的 union“REGS”

“rout”使用未定义的 union“REGS”
...全文
145 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
star19678051 2010-03-15
  • 打赏
  • 举报
回复
我用的编译器是VS2008~~那个里面也没有?那我不就要用回TC?
那在VC2008中有没有别的头文件有包含?
huanmie_09 2010-03-15
  • 打赏
  • 举报
回复
在C语言中的 REGS 结构如下:该联合体在dos.h 中定义

union REGS
{
struct WORDREGS x;
struct BYTEREGS h;
};

明显地,REGS 是由两个另外的结构封装而成,WORDREGS 结构及 BYTEREGS 结构。
而 WORDREGS 如下:

struct WORDREGS
{
unsigned int ax, bx, cx, dx, si, di, cflag, flags;
};

unsigned int 一般在16位字长CPU下的编译器被定义尺寸是16位(2字节)的。
ax,bx,cx,dx,si,di 在前面已有说明,而 cflag 与 flags 用于标志寄存器。

BYTEREGS 如下:
struct BYTEREGS
{
unsigned char al, ah, bl, bh, cl, ch, dl, dh;
};

请参考:http://hi.baidu.com/yangbme/blog/item/3c8b3a08ddc55033e82488c2.html
huanmie_09 2010-03-15
  • 打赏
  • 举报
回复
tc编译器下是<dos.h>是包含union REGS的定义的。
你的编译器没有定义union REGS 结构体吧。
赵4老师 2010-03-15
  • 打赏
  • 举报
回复
用tc或bc或win-tc
#include <dos.h>
cy330206 2010-03-15
  • 打赏
  • 举报
回复
union 楼主这个没有定义,就像声明struct一样的道理

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧