C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[41030] extern void (__interrupt *int_alt_com1)() 에 관한 질문입니다.
이윤성 [grin79] 1586 읽음    2005-07-13 20:06
질문이 너무 자주 올라 오는거 같아서 죄송합니다. ^^;
저부분을 바꿀려는데..
__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++로 다시 짜는게 더 편할꺼 같다는 생각도 드네요.망구 제생각이지만요.
너무 툴에 의존한다는 생각이 드네요...^^ 그래도 좋은게 좋은거죠.
옛날 도스시절 윈도우 프로그램 짜신분들 정말 대단하다고 느낍니다.
직접 컴파일을 안해보면 어려울까요?
그래도 여긴 고수님들 많으시니...많은 조언 부탁드립니다.
혹시나 하고 던진 말씀이..사막에 오아시스 같이..저에겐..단비가 될수 있으니깐요...

+ -

관련 글 리스트
41030 extern void (__interrupt *int_alt_com1)() 에 관한 질문입니다. 이윤성 1586 2005/07/13
41032     Re:extern void (__interrupt *int_alt_com1)() 에 관한 질문입니다. 황경록 1025 2005/07/13
41035         Re:Re:extern void (__interrupt *int_alt_com1)() 에 관한 질문입니다. 이윤성 806 2005/07/14
41036             Re:Re:Re:extern void (__interrupt *int_alt_com1)() 에 관한 질문입니다. 황경록 859 2005/07/14
41039                 Re:Re:Re:Re:extern void (__interrupt *int_alt_com1)() 에 관한 질문입니다. 이윤성 834 2005/07/14
41051                     Re:Re:Re:Re:Re:extern void (__interrupt *int_alt_com1)() 에 관한 질문입니다. 라스코니 942 2005/07/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.