VC6.0一个控制台工程,含有多个C++源文件,每个文件有一个main函数,如何选择哪个main被运行

方法1:https://bbs.csdn.net/topics/391071487

  • 没有它法,你只能忍痛割爱,即使每个main都是你所爱;干掉一些文件里的main只留一个main
  • 一个程序只有一个main做入口和出口点。。
  • 留一个,其他全部注释掉

方法2:https://blog.csdn.net/paullink520/article/details/12153495

今天突然想到了温习一下数据结构,结果发现遇到一个问题:在vc++6.0中新建了一个工程,添加了一个C++源文件,输入了一个算法程序,执行成功;但是我又想在这个工程下面继续添加一个源文件(同样含有main()函数)(为了以后要查看一起的文件,我不能删除之前那一个),继续执行,免得重新建立工程,(在VS2010里头有一个【设置为当前】,可以只允许单独一个,然而VC6.0没有。)

结果发现编译可以,但是连接不成功,报错提示如下:

eg2_1.obj : error LNK2005: _main already defined in eg2_2.obj
Debug/chapter2.exe : fatal error LNK1169: one or more multiply defined symbols found

这是为什么呢?

原因是main函数重定义。注意,程序是按照一个工程为单位进行编译,每个工程只能有且只有一个main函数,也就是只有一个函数入口。

那么我又想偷懒,不想再重新建立一个工程。否则每建立一个算法程序打开新的一个工程,这样做是不会死太麻烦了。那么我们可以怎样来解决呢?

1:最笨的方法,既然说是只能允许一个main()主函数入口,那么我在之前那一个里面用/*……*/注释掉不就可以了吗?不错,这样倒是一个解决方案。

2:从操作看来,方法一这样太麻烦了,假如有几十个文件或者更多,每次都是这样干,也太费事,浪费光阴和青春了吧?那么我们该怎么做呢?

(1)在编好第2个新程序之后,在工程左边fileview里工程下的source files中,选中前一个带main函数的文件,点键盘的【Delete】键,删除该文件(其实只是从工程中移除出去,并没有删除,您可以打开该工程目录查看,它依然存在,只是不在VC6.0中显示了,表示已经不在该工程编译范围之内)。

(2) 然后,执行VC6.0菜单命令“组建”→“清除”,

(3)再按F7或者编译快捷键,重新编译新建的C++程序。

这样,每个cpp文件(包括已移除的前main()文件)都留在当前工程所在目录中,而每次只有一个带main函数的cpp文件存在于工程当中执行。

是不是这样非常方便啦?但是你又会有疑惑了:那我想恢复到原来的那个文件呢?很简单,在工程左边fileview里工程下的source files中单击【右键】→选择【添加文件到当前目录】→选择需要导入到文件cpp,打开确认就可以把删除的文件导入进来。省心省事~~,先聊到这,以后有新技巧的发现,在一一分享!
————————————————
版权声明:本文为CSDN博主「Paullink520」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/paullink520/article/details/12153495

发表评论

电子邮件地址不会被公开。 必填项已用*标注