我们可以在VC ++ 6.0的单个项目中将#include a * .cpp转换为另一个* .cpp文件

时间:2012-12-03 12:08:01

标签: visual-c++

我在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中定义 Debug / Project_1.exe:致命错误LNK1169:找到一个或多个多重定义的符号 执行link.exe时出错。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

#include "Calculate_Int.cpp"

用这个:

int cal_integer();

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