0

我正在 VC++ 6.0 中做一些示例程序。对于一些简单的小程序,我不想为每个程序创建单独的项目。我在一个项目中创建了 2 个文件并且没有 .h 文件,所以我将 .cpp 文件包含到另一个 .cpp 文件中。如果我编译它的工作但如果我构建代码它​​给出错误。以下是代码:

file1.cpp :
-----------

#include <iostream>
#include "Calculate_Int.cpp"
using namespace std;

int main ()
{
    cout << "\n\nFirst file \n" ;

    int x= cal_integer();

    return 0;

}


Calculate_Int.cpp:
------------------

#include<iostream>
using std::cout;
using std::endl;

int cal_integer(){
    cout<< 1+2<<endl;
    cout<<1-5<<endl;
    cout<<1-2<<endl;

        return 0;
}

如果我构建这个 Project1.exe 以下是错误:

链接... Calculate_Int.obj:错误 LNK2005:“int __cdecl cal_integer(void)”(?cal_integer@@YAHXZ) 已在 file_1.obj 调试/Project_1.exe 中定义:致命错误 LNK1169:发现一个或多个多重定义符号错误执行链接.exe。

Project_1.exe - 2 个错误,0 个警告

请让我知道出了什么问题。

4

1 回答 1

0

包含文件与在包含该文件的位置复制该文件的内容相同。这意味着 的内容Calculate_Int.cpp在您的项目中被编译两次。这就是链接器错误告诉您的内容:它不知道选择哪个版本。

为了编译main.cpp你只需要知道你在那里使用的函数的签名;也就是说,你只需要一个声明,而不是一个定义。因此,您可以将这一行替换为main.cpp

#include "Calculate_Int.cpp"

有了这个:

int cal_integer();

你的项目将编译和链接就好了。无论如何,正确的方法是Calculate_Int.h使用该行创建一个文件并将其包含在您需要的任何地方。

于 2012-12-03T12:16:21.517 回答