2012-06-25 2 views
2

HP-UX 및 Linux 용 교차 플랫폼 C++ 응용 프로그램을 작성하고 있습니다. 나는 다음과 같은 오류가 팝업없이 파일 3 내부 파일 1에서 선언 된 const를 숯불 * 변수를 사용하는 방법에 대한 갈 수 있는지 궁금 해서요 :소스 파일의 헤더 파일에 선언 된 전역 변수를 사용하는 방법은 무엇입니까?

/usr/ccs/bin/ld: Duplicate symbol "OPERATING_SYSTEM" in files smac_dictionary.o and smac_dsl_parser.o 
/usr/ccs/bin/ld: Found 1 duplicate symbol(s) 
gmake: *** [smac_dsl_parser] Error 1 

감사합니다.

+0

이 진짜 하나입니다 (오히려 런타임 테스트보다는 매크로 및 조건부 컴파일을 사용하는 것이 더 좋을 수도 매크로 사용). –

+0

제공된 답변 중 귀하의 질문에 대한 답변이 있었습니까? – trumpetlicks

답변

3

[EDIT1]

톱 참조하는 #define한다. 그가 의미하는 것은 (myDeclare.h), 헤더 파일에서이 작업을 수행하는 것입니다

#ifndef __YOURNAMEHERE__ 
#define __YOURNAMEHERE__ 

// All of your declarations here 
extern const char * myVar[6]; 

#endif 
myDeclare.c에서

또는 CPP

이제
const char * myVar[6] = {'a', 'b', 'c', 'd', 'e', 'f'}; 

어디서든 myDeclare.h 포함 할 수 있어야한다, 컴파일은 변수 또는 코드를 한 번만 가져 오려고 시도합니다.

[ORIGINAL] 난 항상 그때 정말 내 C 소스 파일 내의 변수를 "정의", 헤더 파일에서 선언의 키워드 통근를 사용하여이 작업을 수행 할 수 있었다.

여러 소스 파일 (즉, header1.h가 source1.c, source2.c 및 source3.c에 포함됨)에서 동일한 변수를 참조해야하는 경우에도 작동합니다.

이것은 당신이 C에서 그것을 할 것입니다 방법도 ++ (내 예를 참조 .c 인 파일 대신 CPP 파일에도 불구하고)

관련 문제