使用多个文件时遇到一些问题。 我有一个任务是使用三个文件: function.h , function.cpp , prog.cpp 。
在 function.h 中我定义了每个函数。
在 function.cpp 中,我输入了每个函数的代码。
在 prog.cpp 中,我必须调用这些函数。在那里我没有任何定义。
我有这些错误:
"void __cdecl randInt(int *,int)" (?randInt@@YAXPAHH@Z) already defined in function.obj
"void __cdecl showInt(int *,int)" (?showInt@@YAXPAHH@Z) already defined in function.obj
One or more multiply defined symbols found
function.cpp:
#include <iostream>
using namespace std;
void randInt(int *arr, int size) {
for (int *i = arr; i < arr + size; i++) {
*i = rand() % 10;
}
}
void showInt(int *arr, int size) {
cout << "Int Massive" << endl;
for (int *i = arr; i < arr + size; i++) {
cout << *i << ", ";
}
cout << endl;
}
function.h:
#pragma once
void randInt(int *, int);
void showInt(int *, int);
prog.cpp:
#include <iostream>
#include <ctime>;
using namespace std;
#include "function.h"
#include "function.cpp"
int main()
{
srand(time(0));
int n = 10;
int *arrInt = new int[10];
randInt(&arrInt[0], n);
showInt(&arrInt[0], n);
return 0;
}
答案 0 :(得分:6)
包含 .cpp 文件是不正确的,也是不必要的,因此请删除#include "function.cpp"
,您应该没问题。
答案 1 :(得分:0)
您应该以这种方式编辑文件
<强> function.h 强>
#pragma once
void randInt(int *, int);
void showInt(int *, int);
<强> fuction.cpp 强>
#include <iostream>
#include "function.h"
using namespace std;
void randInt(int *arr, int size) {
for (int *i = arr; i < arr + size; i++) {
*i = rand() % 10;
}
}
void showInt(int *arr, int size) {
cout << "Int Massive" << endl;
for (int *i = arr; i < arr + size; i++) {
cout << *i << ", ";
}
cout << endl;
}
<强> prg.cpp 强>
#include <iostream>
#include <ctime>;
#include "function.h"
using namespace std;
int main()
{
srand(time(0));
int n = 10;
int *arrInt = new int[10];
randInt(&arrInt[0], n);
showInt(&arrInt[0], n);
return 0;
}
然后,您可以通过链接prg.cpp和function.cpp文件来编译程序。如果你正在使用g ++编译器,你可以按照下面的方式这样做。
g++ prg.cpp fuction.cpp