我如何在多个文件中使用函数,c ++

时间:2017-04-01 17:13:16

标签: c++ function file

使用多个文件时遇到一些问题。 我有一个任务是使用三个文件: 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;
}

2 个答案:

答案 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