2012-06-28 4 views
0

제 2 소스 파일은 다음과 같습니다오류 건물 C 프로그램

을 main.c :

#include <stdio.h> 
#include "part2.c" 

extern int var1; 
extern int array1[]; 

int main() 
{ 
    var1 = 4; 
    array1[0] = 2; 
    array1[1] = 4; 
    array1[2] = 5; 
    array1[3] = 7; 

    display(); 

    printf("---------------"); 

    printf("Var1: %d", var1); 
    printf("array elements:"); 

    int x; 
    for(x = 0;x < 4;++x) 
     printf("%d: %d", x, array1[x]); 

    return 0; 
} 

part2.c 내가 프로그램을 컴파일하려고

#include <stdio.h> 

int var1; 
int array1[4]; 

void display(void); 

void display(void) 
{ 
    printf("Var1: %d", var1); 
    printf("array elements:"); 

    int x; 
    for(x = 0;x < 4;++x) 
     printf("%d: %d", x, array1[x]); 
} 

이것은 내가 얻는 것이다 :

Ld /Users/John/Library/Developer/Xcode/DerivedData/Test-blxrdmnozbbrbwhcekmouessaprf/Build/Products/Debug/Test normal x86_64 cd /Users/John/Xcode/Test setenv MACOSX_DEPLOYMENT_TARGET 10.7 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk -L/Users/John/Library/Developer/Xcode/DerivedData/Test-blxrdmnozbbrbwhcekmouessaprf/Build/Products/Debug -F/Users/John/Library/Developer/Xcode/DerivedData/Test-blxrdmnozbbrbwhcekmouessaprf/Build/Products/Debug -filelist /Users/John/Library/Developer/Xcode/DerivedData/Test-blxrdmnozbbrbwhcekmouessaprf/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/Test.LinkFileList -mmacosx-version-min=10.7 -o /Users/John/Library/Developer/Xcode/DerivedData/Test-blxrdmnozbbrbwhcekmouessaprf/Build/Products/Debug/Test

ld: duplicate symbol _display in /Users/John/Library/Developer/Xcode/DerivedData/Test-blxrdmnozbbrbwhcekmouessaprf/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/part2.o and /Users/John/Library/Developer/Xcode/DerivedData/Test-blxrdmnozbbrbwhcekmouessaprf/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/main.o for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

012 3,516,

나는 엑스 코드를 사용하고 두 파일은 C 프로젝트의 내부가 Test

오류의 원인이되고, 내가 그것을 어떻게 해결합니까 무엇

라고입니까?

+4

먼저 [헤더 파일] (http://en.wikipedia.org/wiki/Header_file)을 사용하는 방법을 알아보십시오. –

+0

나는 관련성이있는 오류 메시지의 유일한 부분을 굵게 표시했습니다. –

답변

5

제거 "#include "part2.c""과가 "#include "part2.h"

그리고 이동 함수 선언의 변경 : 당신의 "part.c" "part2.h"라는 이름의 파일로 파일의 상단에서

void display(void); 

, 이 파일은 두 .c 파일에 포함되거나 포함되어야합니다.

+0

그리고 .c 파일을 컴파일러에 전달하십시오. – jn1kk

+0

일반적으로'.c' 파일을 포함해서는 안됩니다. 단지'#include foo.h'를 사용하고'.c'와 연결하면됩니다. – Peter