当我尝试在Visual Studio 2010中编译第二个文件时,它给出了多个定义符号的错误,这是有意义的,因为它编译两者并因此包括iostream两次,导致"找到一个或多个多重定义符号& #34;出现错误。所以,我想也许我可以使用包含防护来防止这种情况,但据我了解,你必须将防护添加到包括的文件中。这里适当的行动是什么?
1.cpp
#include <iostream>
using namespace std;
int main()
{
int x;
cout << "**********************************" << endl
<< "* Programming Assignment 1 *" << endl
<< "* Computer Programming I *" << endl
<< "* Author: Cedar Mora *" << endl
<< "* Due Date: Thursday, Jan. 24 *" << endl //this isn't true
<< "**********************************" << "\n" << endl;
cout << "press any key" <<endl;
getchar();
return 0;
}
2.cpp
#include <iostream>
using namespace std;
int main()
{
cout << "bla" << endl;
return 0;
}
作为旁注,是否可以编译项目的一个项目?
我通常不会问,我只是谷歌答案就可以了,但我似乎无法理解这一点。它迫使我必须为我编写的每个代码部分打开一个单独的项目,以便进行编译。
答案 0 :(得分:1)
正如其他人所说,您的问题只是有两个main
功能。 main
是C ++(以及Java和C#...)中的一个特殊函数,它告诉计算机在那里开始执行。像计算机一样思考 - 如果你一次只能执行一行,你会从哪里开始?例如,如果您从1.cpp
开始,您将如何知道跳转到2.cpp
中的代码?要在另一个函数中执行代码,必须调用它 - 否则,计算机将执行main
中包含的代码然后终止。
答案 1 :(得分:0)
你不应该有两个主要功能!将其中一个改为其他东西。例如,尝试将2.cpp中的那个更改为int test()。此外,无论您使用的功能顺序如何,即使您将其放在文件的末尾,也会始终使用main函数启动。
在1.cpp中尝试这个
#include"2.h"
int main()
{
int x = test();
return 0;
}
然后添加一个头文件,2.h
#ifndef 2_H_
#define 2_H_
int test();
#endif
并且,在2.cpp文件中,您将实现放在那里:
#include"2.h"
int test(){
cout << "bla" << endl;
return 0;
}
2.h和2.cpp的目的是将声明和实现分开。