我有一个"功能的多重定义" f2功能错误。 CodeBlocks和MS Visual Studio 2008中也存在相同的错误。 此代码需要进行哪些更改才能正常工作?
以下是我的计划的简单示例?有错误:
**main.cpp**
#include <iostream>
#include"head.h"
using namespace std;
int main()
{
int n = 5;
cout<<f1(n)<<endl;
cout<<f2(n)<<endl;
return 0;
}
**head.h**
#ifndef HEAD_INCLUDED
#define HEAD_INCLUDED
#include "func1.cpp"
#include "func2.cpp"
int f1(int);
int f2(int);
#endif // HEAD_INCLUDED
**func1.cpp**
#include <iostream>
using namespace std;
int f1(int a)
{
return a+a;
}
**func2.cpp**
#include <iostream>
using namespace std;
int f1(int a)
{
return a+a;
}
-------------- Build:Debug in test(编译器:GNU GCC编译器)---------------
g ++ -Wall -fexceptions -g -c /home/laptop/Documents/CodeBlocksProjects/test/func2.cpp -o obj / Debug / func2.o
g ++ -Wall -fexceptions -g -c /home/laptop/Documents/CodeBlocksProjects/test/main.cpp -o obj / Debug / main.o
g ++ -o bin / Debug / test obj / Debug / func2.o obj / Debug / main.o
obj / Debug / main.o:在函数f2(int)':
/home/laptop/Documents/CodeBlocksProjects/test/func2.cpp:5: multiple definition of
f2(int)&#39;
obj / Debug / func2.o:/home/laptop/Documents/CodeBlocksProjects/test/func2.cpp:5:首先在这里定义
collect2:错误:ld返回1退出状态
处理终止,状态为1(0分钟,1秒(秒))
2个错误,0个警告(0分钟,1秒(s))
答案 0 :(得分:0)
试试这个:
head.h
#ifndef HEAD_INCLUDED
#define HEAD_INCLUDED
int f1(int);
int f2(int);
#endif // HEAD_INCLUDE
head.cpp
#include "head.h"
int f1(int a)
{
return a+a;
}
int f2(int a)
{
return a+a;
}
test1.cpp
#include <iostream>
#include "head.h"
using namespace std;
int main(){
int n = 5;
int val1 = f1(3);
int val2 = f2(5);
cout << "val1 = " << val1 << endl;
cout << "val2 = " << val2 << endl;
return 0;
}