|
질문이 너무 자주 올라 오는거 같아서 죄송합니다. ^^;
저부분을 바꿀려는데..
__interript 이거는.. 도스랑 윈도우에서 다 같이 쓰이는 함수인거 같습니다.
msdn 에도 나와 있네요.....
근데 저는 함수를 짜면서 저런 형식의 함수는 처음 본거 같습니다.
extern void (__interrupt *int_alt_com1)() ;
extern void (__interrupt *int_alt_com2)() ;
extern void (__interrupt *int_alt_com3)() ;
extern void (__interrupt *int_alt_com4)() ;
extern void (__interrupt *int_alt_com5)() ;
extern void (__interrupt *int_alt_com6)() ;
extern void (__interrupt *int_alt_com7)() ;
extern void (__interrupt *int_alt_com8)() ;
이런식으로 쭉 되어 있거등요...근데 찾아보니 저런 형식도 정의가 되어 있더군요.
__interrupt 에대해서 찾아 보면..
////////////////////////////////////////////////////////////////////////////////
Synopsis:
#include <dos.h>
void (__interrupt __far *_dos_getvect(unsigned intnum))();
Description:
The _dos_getvect function gets the current value of interrupt vector
number intnum.
Returns:
The _dos_getvect function returns a far pointer to the current interrupt
handler for interrupt number intnum.
Example:
#include <stdio.h>
#include <dos.h>
volatile int clock_ticks;
void (__interrupt __far *prev_int_1c)();
#define BLIP_COUNT (5*18) /* 5 seconds */
void __interrupt __far timer_rtn()
{
++clock_ticks;
_chain_intr( prev_int_1c );
}
int delays = 0;
int compile_a_line()
{
if( delays > 15 ) return( 0 );
delay( 1000 ); /* delay for 1 second */
printf( "Delayed for 1 second\n" );
delays++;
return( 1 );
}
void main()
{
prev_int_1c = _dos_getvect( 0x1c );
_dos_setvect( 0x1c, timer_rtn );
while( compile_a_line() ) {
if( clock_ticks >= BLIP_COUNT ) {
putchar( '.' );
clock_ticks -= BLIP_COUNT;
}
}
_dos_setvect( 0x1c, prev_int_1c );
}
Classification:
WATCOM
Systems:
DOS, Windows, DOS/PM
See Also:
_chain_intr, _dos_keep, _dos_setvect
////////////////////////////////////////////////////////////////////
인데 가만히 보면 윈도우에서도 쓰이는거 같거등요.__far* 야 그냥 제거 하면 되는거구..
msdn 에서도 찾아 봤는데..
문제가 생기면..
__fastcall 을 적어 주라고 하더군요..
extern void __fastcall (__interrupt *int_alt_com1)() ; 이렇제 적어 주어도..
에러는 계속 나는거 같습니다.
지금 라이브러리 부분부터 32bi 로 바꾸고 있는데...
무사히 지나치는 함수가 한개도 없네요...
모가 저리 함수가 많은지... 프로그램 자체는 무지 간단한 기능인데..
그냥 마그네틱에서 식호 읽은 기계에서 comport 전송받아서 돈 계산 하는거거등요...
에공...한숨만 푹푹 나옵니다.
아마 저 언어들은 지금은 거의 안쓰이겠죠.유닉스 쪽에서는 쓸려나...
이럴줄 알았으면...c 언어 처음 배울때..기초부터 꼼꼼히 배워 두는건데....
툴을 잘쓰지도 못하지만..
가끔은 툴의 위해함을 느끼지만..가끔은 그 툴때문에..무언가가..새로운게 막힐때는 사정 없이 막힌다는 느낌이 듭니다.
차다리 그냥 처음부터 볼랜드 c++로 다시 짜는게 더 편할꺼 같다는 생각도 드네요.망구 제생각이지만요.
너무 툴에 의존한다는 생각이 드네요...^^ 그래도 좋은게 좋은거죠.
옛날 도스시절 윈도우 프로그램 짜신분들 정말 대단하다고 느낍니다.
직접 컴파일을 안해보면 어려울까요?
그래도 여긴 고수님들 많으시니...많은 조언 부탁드립니다.
혹시나 하고 던진 말씀이..사막에 오아시스 같이..저에겐..단비가 될수 있으니깐요...
|