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
[74674] [질문] include 되는 header file의 일부분을 include 에서 제외할 수 있나요?
단단한돌 [heaven2] 3368 읽음    2017-11-23 20:37
Component간 Conflict가 발생해서 며칠째 개고생 중입니다.
파일들을 따라가 보니 하나의 헤더 파일을 제외하면 성공할 것 같은데요..

/////////////////////////////////////
// UnitMain.h
#include 
#include "SBSimpleSftp.hpp"   // GuardnetThread.cpp에서 include에서 제외해하하는 파일
..

/////////////////////////////////////
// GuardnetThread.cpp 
#include "GuardnetThread.h"
#include "UnitMain.h"               // UnitMain.h을 include함. => Conflict 발생..  
#include 		// Routing 정보
#pragma comment(lib, "iphlpapi.lib")


GuardnetThread.cpp에서 UnitMain.h 파일을 include하는데,
UnitMain.h파일의 "SBSimpleSftp.hpp" 파일과 GuardnetThread.cpp에서 include한
<iphlpapi.h>파일이 Conflict가 발생합니다.

보통 Header file의 Dependency 때문에 문제가 발생하면,
Include 순서를 바꾸거나, Build Order를 조정해서 해결하는데..
두 파일의 include 순서를 바꾸거나, Build Order를 바꿔도 마찬가지거나,
또다른 엄청난 Compile Error를 만들어 냅니다.

최종적으로 찾아낸 것이 <<iphlpapi.h>과 "SBSimpleSftp.hpp" 가 서로 충돌하는 상황입니다.
GuardnetThread.cpp 에서 UnitMain.h를 Include할 때 "SBSimpleSftp.hpp" 파일만 include에서
제외하고 싶습니다. 그러면, 이 지난했던 문제가 해결될 것 같습니다.

결론적으로,
어떤 소스 파일(GuardnetThread.cpp)을 컴파일하면서,
이 파일이 Include 하는 파일(UnitMain.h)에서 특정 include file("SBSimpleSftp.hpp")만 Include를 제외시키고
싶습니다.

이런 것이 가능할까요?

#pragma syntax을 뒤져봤는데.. 흔히 쓰는 hdrstop, comment, link 정도는 알겠는데..
다른 옵션들은 도통 이해가 가지 않네요.

Incldue 하면서 특정 파일만 include에서 제외하는 것이 가능할까요?

아래는 Error Text입니다.

[bcc32 Error] mprapi.h(1273): E2015 Ambiguity between 'CERT_NAME_BLOB' and 'Sbwincrypt::CERT_NAME_BLOB'
  Full parser context
    GuardnetThread.cpp(16): #include c:\program files (x86)\embarcadero\rad studio\12.0\include\windows\sdk\iphlpapi.h
    iphlpapi.h(34): #include c:\program files (x86)\embarcadero\rad studio\12.0\include\windows\sdk\iprtrmib.h
    iprtrmib.h(38): #include c:\program files (x86)\embarcadero\rad studio\12.0\include\windows\sdk\mprapi.h
    mprapi.h(1266): class _IKEV2_TUNNEL_CONFIG_PARAMS
[bcc32 Error] mprapi.h(1309): E2015 Ambiguity between 'CRYPT_HASH_BLOB' and 'Sbwincrypt::CRYPT_HASH_BLOB'
  Full parser context
    GuardnetThread.cpp(16): #include c:\program files (x86)\embarcadero\rad studio\12.0\include\windows\sdk\iphlpapi.h
    iphlpapi.h(34): #include c:\program files (x86)\embarcadero\rad studio\12.0\include\windows\sdk\iprtrmib.h
    iprtrmib.h(38): #include c:\program files (x86)\embarcadero\rad studio\12.0\include\windows\sdk\mprapi.h
    mprapi.h(1306): class _SSTP_CERT_INFO


고수님들의 도움을...~~!!
감사합니다.~!!



+ -

관련 글 리스트
74674 [질문] include 되는 header file의 일부분을 include 에서 제외할 수 있나요? 단단한돌 3368 2017/11/23
74679     Re:[질문] include 되는 header file의 일부분을 include 에서 제외할 수 있나요? 빌더(TWx) 3797 2017/11/27
74680         감사~감사~감사~!! 해결~!! 단단한돌 3627 2017/11/28
74675     혹시 이렇게 하는 방법은? 단단한돌 3370 2017/11/23
74681         자답... Re:혹시 이렇게 하는 방법은? 단단한돌 3557 2017/11/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.