C++ 代码块不构建我的项目

C++ 代码块不构建我的项目,c++,gcc,codeblocks,C++,Gcc,Codeblocks,每次单击Mac OSX代码块中的“运行”或“构建并运行”选项时,我都会看到以下对话框: 我已经检查了项目>属性>构建目标,这是一些论坛帖子说我应该做的,所有的文件都被检查了,但我一直得到相同的弹出窗口 这是我的生成日志: -------------- Build: Release in printarray (compiler: GNU GCC Compiler)--------------- g++ -o bin/Release/printarray obj/Release/arrays

每次单击Mac OSX代码块中的“运行”或“构建并运行”选项时,我都会看到以下对话框:

我已经检查了项目>属性>构建目标,这是一些论坛帖子说我应该做的,所有的文件都被检查了,但我一直得到相同的弹出窗口

这是我的生成日志:

-------------- Build: Release in printarray (compiler: GNU GCC Compiler)---------------

g++  -o bin/Release/printarray obj/Release/arrays.o obj/Release/main.o  -s  
ld: warning: option -s is obsolete and being ignored
ld: duplicate symbol _anMyArray in obj/Release/main.o and obj/Release/arrays.o for architecture x86_64
collect2: ld returned 1 exit status

以下是我的构建消息:


这些是文件,但我不确定内容是否与问题有关(我确保在创建头和函数定义时检查了Debug和Release):

main.cpp

#include <iostream>
#include "arrays.h"

int main()
{
    using namespace std;

    PrintArray(anMyArray);

    return 0;
}
#include <iostream>
#include "arrays.h"

void PrintArray(int anArray[])
{
    using namespace std;

    int nElements = sizeof(anArray) / sizeof(anArray[0]);
    for (int nIndex=0; nIndex < nElements; nIndex++)
        cout << anArray[nIndex] << endl;
}

有什么帮助吗?

这是因为您在头文件中定义了变量
anArray
。当它包含在两个中时,它会定义两次,给您一个
重复符号
错误

只需在头文件中声明它

extern int anMyArray[9];

并在一个(且仅一个)源文件中定义它。

在头文件中声明
anMyArray
,然后将其包含在两个cpp文件中,这意味着由于头文件扩展,变量被声明了两次

将其移动到main.cpp文件

extern int anMyArray[9];