Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C/C++;-在visual studio c+中处理中断+;_C++_C_Visual Studio 2013_Interrupt_Systems Programming - Fatal编程技术网

C++ C/C++;-在visual studio 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)

我是一名计算机科学专业的学生,最近学习了如何在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) 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);