注册 登录
编程论坛 C图形专区

直接写屏

hjj1123 发布于 2006-10-05 12:00, 765 次点击
我上次发了关于直接写屏的帖子没啥反映 现在终于找到了一个能运行的代码
能运行的是
#define VGA256 0x13
#include<conio.h>
#include<dos.h>
#include<stdio.h>
void main()
{ int x,y;
union REGS inregs,outregs;
inregs.h.ah=0;
intregs.h.al=(unsigned char)VGA256;
int86(0x10,&inregs,&outregs);
for(x=100,y=100;x<=300;x++)
*(unsigned char far *(0xA0000000L)+y*320+x)=12;
getch();
}
而上次的代码是
#define VGA256 0x13
#include<conio.h>
#include<dos.h>
#include<stdio.h>
void main()
{ int x,y;
union REGS inregs,outregs;
inregs.h.ah=0;
intregs.h.al=(unsigned char)VGA256;
int86(0x10,&inregs,&outregs);
unsigned char far *buffer=(unsigned char far *)0xA0000000L;
for(x=100,y=100;x<=300;x++)
buffer[y*320+x]=12;
getch();
}
着段代码在编译的时候出错
Error ;Expression syntax in function main
这是怎么回事呢?希望那位牛人能解答一下.

1 回复
#2
一笔苍穹2006-10-05 13:13

#define VGA256 0x13
#include<conio.h>
#include<dos.h>
#include<stdio.h>
void main()
{ int x,y;
union REGS inregs,outregs;
unsigned char far *buffer=(unsigned char far *)0xA0000000L;
inregs.h.ah=0;
inregs.h.al=(unsigned char)VGA256;
int86(0x10,&inregs,&outregs);

for(x=100,y=100;x<=300;x++)
buffer[y*320+x]=12;
getch();
}
给你改了一下,两处错误:
1、intregs.h.al=(unsigned char)VGA256;中的 intregs 多了一个字母“t”;
2、unsigned char far *buffer=(unsigned char far *)0xA0000000L,在C语法中,定义变量必须放在代码块中可执行语句之前,不过在C++中这样是合法的。

1