2012-06-28 68 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)

我使用Xcode和这两个文件是一个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