C++ 代码块不构建我的项目
每次单击Mac OSX代码块中的“运行”或“构建并运行”选项时,我都会看到以下对话框: 我已经检查了项目>属性>构建目标,这是一些论坛帖子说我应该做的,所有的文件都被检查了,但我一直得到相同的弹出窗口 这是我的生成日志: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
-------------- 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];