在Java中,你可以让每个类都拥有它自己的main方法,但是当我尝试用C ++创建两个cpp文件时,两者都有自己的主要方法,编译器告诉我main已经定义了。这是否意味着我需要为每个主要方法创建一个新项目?我正在学习C ++教程,我不想为我们所做的每个示例程序创建一个新项目,我只想要一个具有多个主要方法的项目。这可能吗?
答案 0 :(得分:2)
您的.cpp
没有“方法”,可能您定义的是自由函数(即未绑定到任何类的过程),并且它们都在同一名称空间中。这当然会在链接阶段产生错误,因为你正在多次定义相同的东西。
如果要定义类,可以使用class
关键字;当然,在Java中,您定义的每个类都可以拥有自己的main
方法。
我正在学习C ++教程,我不想为我们所做的每个示例程序创建一个新项目,我只想要一个具有多个主要方法的项目。这可能吗?
没有。入口点只有一个 - 全局main
函数。如果你想允许几个可能的“子程序”,在一个单独的函数中写下它们中的每一个,并决定从单个main
调用哪一个。
答案 1 :(得分:1)
在C#
中,每个项目都有自己的Program.cs
文件,这是入口点。如果您最终组合了多个项目,那么告诉Visual Studio将其编译为库并选择要使用的项目的入口点是微不足道的。
在C++
中,全局命名空间中只能有main
的一个定义。例如,您可以在::main
将调用的命名空间中拥有自己的自定义main。例如,这种技术在SDL中完成,因此用户不必自己创建main
,他可以链接-lSDL_main
。
答案 2 :(得分:0)
在MS Visual Studio中,一个“解决方案”(.sln文件)将包含多个“项目”。您要生成的每个可执行文件都有自己的“项目”,您可以在同一个“解决方案”中拥有许多此类项目。并非每个“项目”都需要生成可执行文件 - 通常“项目”只会生成一个库,例如许多可执行文件可能包含的常用实用程序库。当您将两个“main()”项目放入同一项目中的两个.cpp文件时,编译器会将.cpp文件编译成.obj文件,然后可能尝试创建一个可执行文件,其中两个.obj文件都链接到可执行文件。当链接器尝试将两个“main()”函数放入同一个可执行文件时,您将收到错误,因为您不能有两个具有相同名称的入口点。
Matteo关于课程和方法的内容也是您必须理解的内容。