|
빌더에서는 헤더파일에 전역변수의 정의(선언 아님)하는 행위를 경고하도록 컴파일러가 구성되어 있습니다. 경고는 큰 상관은 없지만 그래도 좀 찝찝하죠? 물론 헤더에 변수를 정의하고 여기저기서 헤더파일을 여기저거서 포함시키면, 골 때는 현상이 발생하겠죠 ! -___________-;
해결방법은 간단합니다.
헤더파일에는 선언만 하고 c, cpp파일에 변수를 정의하면 됩니다. (물론 다른 방법도 있습니다.)
[예]
c, cpp 파일에
char *gMsgBox; // 정의
h, hpp 파일에
extern char *gMsgBox; // 선언
정의 : 실제 메모리 영역을 잡는 (메모리상에 존재하게 하는) 행위
선언 : 컴파일러에게 이만큼의 크기의 메모리가 어딘가 정의되어 있으니 그렇게 알아라라고 알려 주는 것.
ppiri 님이 쓰신 글 :
: 프로그램에서 메시지만 따로 처리하는 message.h를 만들었어요..
: 그리고 거기에 char *MsgBox[]{...} 이렇게 선언을 하고 main.cpp에서 #include "message.h"를 선언하고 나서 컴파일을 했는데
: [Linker Warning]Public symbol '_MsgBox' define in both module D:\프로젝트\MAIN.OBJ and D:\프로젝트\SEARCH.OBJ 라는 경고가 뜨는데여..
: 어떻게 해결을 해야할지..
: 알려주세여..ㅠㅠ
:
|