1. 背景
在用VS编程学习C/C++时,总会按照教科书编写多个C/C++程序。程序虽小,但却都包含main()函数。那么能否在当前项目下运行多个包含main函数的.cpp文件?
2. 解答
不能,VS一个项目只能有一个main()。在VS中,区分一个C++程序是通过项目区分,而不是以.cpp文件区分。
3. 实例
main.cpp代码:
// main.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
cout << 0 << endl;
return 0;
}
main1.cpp代码:
// main.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
cout << 1 << endl;
return 0;
}
运行结果
错误提示:
1>main.obj : error LNK2005: _main 已经在 main1.obj 中定义
1>C:\Users\Administrator\Desktop\main\Debug\main.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
4. 替代方法
方法1:只保留待运行的.ccp文件,将其余包含main()的.cpp文件移除、删除、禁用(从生成中排除)、注释main()、修改main函数名等。
移除
禁用
方法2:使用代码编辑器,如VSCode,Sublime Text 3等。在代码编辑器上写代码,复制到VS上编译。当然也可以在代码编辑器上搭建C/C++编译环境,直接在上面编译,推荐VS Code:搭建C/C++编译调试运行环境。
VSCode编译main.cpp
VSCode编译main1.cpp
5. 总结
- VS虽然编译方便,但体量太大,更适用于编写大中型的项目,起码上百行代码以上。对于初学者练习编程而言属于牛刀小用。
- 推荐在代码编辑器上搭建运行环境,虽然有的编译调试不太方便。
- VC 6.0(VC++6.0)、Dev C++、 Code::Blocks也能用,虽然版本看起来很老。