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
[64626] Re:공통 헤더화일을 사용 하sl, Class 가 중복이 되어 경고가 발생하는데, 어떻게 해결 하나요??
송신영 [palindrome] 885 읽음    2011-06-16 13:04
의외로 이런 실수를 하시는 분들이 많네요..
해더파일에 변수(클래스의 인스턴스)를 선언하게 되면
해당 해더를 include할 때마다 선언이 중복적으로 되기 때문에 문제가 발생됩니다.
문제가 되는 것은 아래 선언부 때문입니다.

list<Civil3DLogData_h>Civil3DLogDataList; // STL list 에 요소별 입력된것
Civil3DLogData_h Civil3DLogDataInput; // STL list 에 요소별로 입력할 자료단위 

글로벌로 사용하고자 한다면, 선언은 cpp 에서 한곳에서만 하고
해더파일에는 extern으로 선언하여 사용하면 됩니다.

Main.h
extern Civil3DLogData_h * Civil3DLogDataInput;

Main.cpp
Civil3DLogData_h *Civil3DLogDataInput;
Civil3DLogDataInput = new Civil3DLogData_h;

이런 식으로....

뽀뽀중 님이 쓰신 글 :
: 전역 변수, 클래스 를 하나의 헤더 화일에 작성 하였습니다.
:
: 그리고 이 헤더 화일을 각각의 화일에서 #include 했는데,
:
: Class 화일 중복이 발생했다는 경고가 발생 합니다.
:
: 어떻게 해결 해야 하나요??
:
: 코드 작성은 아래와 같이 했습니다.
:
:
: Main.h  화일
:
:
: class Civil3DLogData_h {
: 	// Civil 3D 로그 class
: 
: public:
: 	AnsiString AsAddChainLength; // 정체인, 추가체인
: 	AnsiString AsCrossSectionEa; // 타점갯수
: 	vectorPointX; // X좌표
: 	vectorPointZ; // Y좌표
: 	int IntTotalCivil3dRowEa; // 전체갯수
: 
: private:
: 
: };
: 
: // Civil3DLogData 데이터 입력 list
: listCivil3DLogDataList; // STL list 에 요소별 입력된것
: Civil3DLogData_h Civil3DLogDataInput; // STL list 에 요소별로 입력할 자료단위
: 

:
:
: 그리고 다른 헤더 화일에서는
:
: Survey.h 헤더화일
:
:
: #ifndef SurveyH
: #define SurveyH
: 
: #include "Main.h"
: 
: #endif
: 

:
: 이런 방식으로 여러 헤더 화일에서, Main.h 헤더 화일을 #include 하였습니다.
:
:
: 경고는 Main.h 화일을 include 한 각각의 헤더 화일 마다 경고가 발생합니다.
: 이는 class 가 중복되어서 발생하는것 같은데, 어떻게 수정을 해야 하나요???
:
: 아래는 경고 메세지 입니다.
:
: Checking project dependencies...
: Compiling WaterGRID.cbproj (Release configuration)
: [BCC32 Warning] Main.h(186): W8058 Cannot create pre-compiled header: initialized data in header
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataOutput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataOutput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataOutput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_DataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ
: [ILINK32 Warning] Warning: Public symbol '_DataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_DataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_SurveyDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ
: [ILINK32 Warning] Warning: Public symbol '_SurveyDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_SurveyDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataOutput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataOutput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_DataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_DataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_SurveyDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_SurveyDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataOutput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_DataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_SurveyDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: Success
: Elapsed time: 00:00:47.5

+ -

관련 글 리스트
64625 공통 헤더화일을 사용 하sl, Class 가 중복이 되어 경고가 발생하는데, 어떻게 해결 하나요?? 뽀뽀중 978 2011/06/16
64626     Re:공통 헤더화일을 사용 하sl, Class 가 중복이 되어 경고가 발생하는데, 어떻게 해결 하나요?? 송신영 885 2011/06/16
64627         덕분에 해결되었습니다. 감사 합니다. ^^ (내용무) 뽀뽀중 794 2011/06/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.