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
[66055] Re:Re:Re:C++ Builder XE에서 CPort 4.1 사용하기 문의!
빌더 [] 1957 읽음    2012-01-26 15:28
:
: : : 두가지를 주석처리하면 정상적으로 컴파일이 됩니다. inline 함수 선언과 충돌이 일어나는 것 같은데요. 궁금한건 이것을 주석으로 처리해도 되는지 입니다. 지금 컴파일이 잘 되더라도 코딩하다가 문제가 생기면 난감할 것 같아서 문의 드립니다. 꼭좀 도와주세요 ㅜ.ㅜ
: :
: 인라인 함수는 주석 처리 해줘도 크게 문제 없는 건가요??



이와 같은 충돌이 발생하는 이유는 constructor 이름을 사용자가 지정할 수 있는 델파이 파스칼 언어와는 달리
C++ 에서는 constructor 이름이 클래스 네임과 같아야 한다는 언어적인 제약이 있기 때문인데요.

//    /* Exception.CreateRes */ inline __fastcall EComPort(
//    /* Exception.CreateResHelp */ inline __fastcall EComPort(

위와 같이 인라인으로 정의된 콘스트럭터 부분은 주석 처리 해줘도 상관이 없습니다.

EComPort 예외처리 클래스는 델파이로 구현되어있고, CPort 유닛에서 EComPort 예외처리 클래스의
목적은 CPort 유닛에서 자체적으로 핸들링하는 에러코드인 Code 값과 Win32 API인 GetLastError()를
이용해서 얻은 윈도우즈 시스템 에러코드 WinCode를 throw 를 통해 try ... catch ... 핸들러를 갖고있는
패런트에 이 두개의 에러코드 값을 전달하는 것이 주 목적이기 때문입니다.

가령 CPort를 사용할 때...

try {
           .......
           CPort 코드사용
           .......          
}
catch (EComPort &e)
{
       int nCode = e.Code;
       int nWinCode = e.WinCode;
}

위와 같은식으로 애플리케이션에서 try.... catch 블럭을 지정해 준다면....

에러가 발생했을 때.. CPort 유닛에서 아래와 같은 식으로 예외를 던져 주도록 구현되어있어서
throw EComPort( Code, GetLastError());

애플리케이션에서 try.... catch.. 블럭을 통해서 예외상황을 캐치해 내고, Code, WinCode 두개의
에러코드 값도 알아 낼수 있는 식입니다.

CPort 유닛에서 throw 할 때 생성되는 EComPort  객체를 응용프로그램에서 단지 사용하는 구조라는 거죠.

C++ 응용 프로그램에서 EComPort를 상속받아 클래스를 확장해서 사용하는 것도 아니고...
Exception 클래스를 상속받아 파스칼로 CPort 유닛에서 구현해 놓은 EComPort를 그대로 사용하는 거기 때문에
Exception에서 정의되어있는 컨스트럭터 들을 C++ 헤더파일에서 따로 오버로드해서 정의할 필요가 없습니다.

+ -

관련 글 리스트
66045 C++ Builder XE에서 CPort 4.1 사용하기 문의! Kenzuro 1778 2012/01/26
66049     Re:C++ Builder XE에서 CPort 4.1 사용하기 문의! 빌더 1813 2012/01/26
66051         Re:Re:C++ Builder XE에서 CPort 4.1 사용하기 문의! Kenzuro 1790 2012/01/26
66055             Re:Re:Re:C++ Builder XE에서 CPort 4.1 사용하기 문의! 빌더 1957 2012/01/26
66066                 Re:Re:Re:Re:C++ Builder XE에서 CPort 4.1 사용하기 문의! Kenzuro 3480 2012/01/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.