C++ C/C++;-在visual studio c+中处理中断+;
我是一名计算机科学专业的学生,最近学习了如何在C语言中使用中断。 在网上搜索了几次后,我得出了以下代码:C++ C/C++;-在visual studio c+中处理中断+;,c++,c,visual-studio-2013,interrupt,systems-programming,C++,C,Visual Studio 2013,Interrupt,Systems Programming,我是一名计算机科学专业的学生,最近学习了如何在C语言中使用中断。 在网上搜索了几次后,我得出了以下代码: #include <stdio.h> #include <dos.h> #include <conio.h> #ifdef __cplusplus #define __CPPARGS ... #else #define __CPPARGS #endif #define INTR 0x1c #define gotoxy(x,y)
#include <stdio.h>
#include <dos.h>
#include <conio.h>
#ifdef __cplusplus
#define __CPPARGS ...
#else
#define __CPPARGS
#endif
#define INTR 0x1c
#define gotoxy(x,y) printf("\033[%d;%dH", (x), (y))
//#define clear() printf("\033[H\033[J");
/*
//positioning
void gotoxy(int x, int y)
{
printf("%c[%d;%df",0x1B,y,x);
}
*/
void interrupt handler(__CPPARGS);
void interrupt ( *oldhandler)(__CPPARGS);
int countS = 0;
int s = 0;
int m = 0;
int ms = 0;
int l = 0;
int flag = 0;
int main(void)
{
clrscr();
printf("%02d:%02d:%02d",m,s,ms);
oldhandler = getvect(INTR);
setvect(INTR, handler);
char c;
while(1)
{
c = getch();
switch(c){
case 'e':
goto exit_loop;
break;
case ' ':
flag = 1-flag;
break;
case 'r':
flag = s = m = ms = l = 0;
clrscr();
printf("%02d:%02d:%02d",m,s,ms);
break;
case 'l':
gotoxy(++l,0);
printf("%02d:%02d:%02d",m,s,ms);
break;
}
}
exit_loop:;
setvect(INTR, oldhandler);
return 0;
}
void interrupt handler(__CPPARGS)
{
if(flag == 1){
countS++;
ms += 55;
if(countS == 18)
{
countS = ms = 0;
s++;
if(s==60)
{
m++;
s = 0;
}
}
gotoxy(0,0);
printf("%02d:%02d:%02d",m,s,ms);
}
}
这些错误与以下行有关:
void interrupt handler(__CPPARGS);
void interrupt ( *oldhandler)(__CPPARGS);
并使用:clrsc()代码>
我的操作系统是windows 10-64位,这是我第一次在visual studio中使用c/c++编程。我在Turbo C++和DeVC++中做过一些,但是只有Turbo C++运行这个示例,甚至没有DEVC++。什么是衍射?我应该如何解决这个问题?
感谢您在64位长模式下工作,因此您无法访问实模式BIOS中断或MS-DOS服务。您的代码还存在许多其他问题,但归根结底,如果没有16位编译器和仿真器(如64位Windows上没有的NTVDM),它将无法工作。MS-DOS已经失效。MS-DOS仍然失效。我们已经杀了它。我们如何安慰自己,所有杀人犯中的杀人犯?世界上最神圣、最强大的东西在我们的刀下流血而死:谁来擦去我们身上的鲜血?首先,多斯女士已经死了。这是毫无疑问的。葬礼登记册上有牧师、书记员、殡仪员和首席哀悼者的签名。Windows签了名。Windows的名字在改变方面很好,因为它选择了它的任何东西。值得注意的是,Turbo C++是几十年前的,并且是C++标准化之前的。在这一点上,它也可以被视为一种不同的语言。缓慢的死亡开始于MS在明确道路是一条死胡同之后颠倒了MS-DOS/Windows的层次结构。他们没有尝试在MS-DOS上运行Windows,而是让MS-DOS在Windows上运行。我们可以通过在系统中建立神龛来减轻我们的罪恶感,这样我们就可以向MS-DOS致敬,运行古老的代码,甚至用其受人尊敬的编译器创建新代码,尽管你在那里找不到我。那么你的意思是我不能在visual studio中修复这个问题,或者我应该在其中安装其他插件或编译器吗?我现在该怎么办?有没有任何现代的IDE可以做为Turbo C++没有任何问题?@ MuHAMADFRAHA.RasuleNead需要安装一个8086模拟器,如Dox Box或EMU806,并在编译器上编写代码,在16位OS中不能仿真这16位实模式。看见
void interrupt handler(__CPPARGS);
void interrupt ( *oldhandler)(__CPPARGS);