Я информатика студента и недавно узнал, как использовать прерывание в С. через пару поиска в Интернете я пришел с этим кодом:C/C++ - работа с прерываниями в Visual Studio 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++. Я изменил свою IDE и теперь с помощью 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();
моей операционной системы Виндоус 10-64bit и его мое первое программирование в c/C++ в visual studio. Я делаю некоторые в Turbo C++ и devC++ раньше, но только Turbo C++ запускает этот образец и даже devC++. каковы различия и как я могу это решить? thanks
MS-DOS мертв. –
MS-DOS остается мертвым. И мы убили его. Как мы успокоимся, убийцы всех убийц? То, что было самым святым и могущественным из всех, что мир еще владел, погибал под нашими ножами: кто вытернет эту кровь от нас? –
MS-DOS был мертв: для начала. В этом нет никаких сомнений. Реестр его захоронения был подписан священнослужителем, клерком, гробовщиком и главным скорбящим. Windows подписала его. И имя Windows было хорошо на «Change», для чего-либо, на что он решил поместить свою руку. – user4581301