C ++ ERROR函数2的多重定义

时间:2015-04-16 14:06:39

标签: c++ visual-studio-2010 c++11 gcc codeblocks

我有一个"功能的多重定义" 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))

1 个答案:

答案 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;
}
  1. 在linux中编译并执行命令 g ++ -o test1.o head.cpp test1.cpp ./test1.o