C / работа с прерываниями в визуальной студии Stack Overflow

Я студент информатики и недавно узнал, как использовать прерывания в 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);
}
}

этот код является своего рода секундомером в консольном приложении C и прекрасно работает в историческом Turbo C ++.
Я изменил свою среду разработки и теперь использую Visual Studio 2013, когда я создаю новый проект в Visual C ++ -> win32ConsoleApplication и вставляю этот код в основной файл. это не работа. тогда ошибка говорит, что я должен добавить #include "stdafx.h" в первом моем файле. после этого это мой основной список ошибок:

Error   1   error C2146: syntax error : missing ';' before identifier 'handler' c:\users\mohammad\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp 32  1   ConsoleApplication1
Error   2   error C2182: 'interrupt' : illegal use of type 'void'   c:\users\mohammad\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp 32  1   ConsoleApplication1
Error   3   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\users\mohammad\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp 32  1   ConsoleApplication1
Error   4   error C2065: 'oldhandler' : undeclared identifier   c:\users\mohammad\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp 33  1   ConsoleApplication1
Error   5   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\users\mohammad\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp 33  1   ConsoleApplication1
Error   6   error C2086: 'int interrupt' : redefinition c:\users\mohammad\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp 33  1   ConsoleApplication1
Error   7   error C2143: syntax error : missing ';' before '('  c:\users\mohammad\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp 33  1   ConsoleApplication1
Error   8   error C2059: syntax error : ')' c:\users\mohammad\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp 33  1   ConsoleApplication1
Error   9   error C2059: syntax error : ';' c:\users\mohammad\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp 33  1   ConsoleApplication1
Error   10  error C3861: 'clrscr': identifier not found c:\users\mohammad\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp 44  1   ConsoleApplication1
Error   11  error C2065: 'oldhandler' : undeclared identifier   c:\users\mohammad\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp 46  1   ConsoleApplication1
Error   12  error C3861: 'getvect': identifier not found    c:\users\mohammad\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp 46  1   ConsoleApplication1
Error   13  error C3861: 'setvect': identifier not found    c:\users\mohammad\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp 48  1   ConsoleApplication1
Error   14  error C3861: 'clrscr': identifier not found c:\users\mohammad\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp 67  1   ConsoleApplication1

эти ошибки связаны с этими строками:

void interrupt handler(__CPPARGS);
void interrupt ( *oldhandler)(__CPPARGS);

и использование: clrscr();

моя операционная система — windows 10-64bit, и я впервые программирую на c / c ++ в visual studio. Я делаю некоторые в Turbo C ++ и DevC ++ раньше, но только Turbo C ++ запустить этот пример и даже не DevC ++. что такое различия и как мне это решить?
Спасибо

-2

Решение

Вы работаете в 64-битном длинном режиме, поэтому у вас нет доступа к прерываниям BIOS реального режима или службам MS-DOS. У вашего кода есть ряд других проблем, но суть в том, что он не будет работать без 16-битного компилятора и эмулятора (например, NTVDM, который отсутствует в 64-битной Windows)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]