在不同的main()之间轻松切换

时间:2012-09-12 21:22:00

标签: c++ visual-studio-2010

我正在使用VS2010 我有一个带有几个头的项目和一个带main()函数的文件。 出于测试目的,我希望能够轻松地使用另一个main()函数来实现与原始main不同的东西。 有没有一种简单的方法来定义2“主”功能,并在它们之间轻松切换? 最好的是编译2个二进制文件,一个从main1()开始,另一个在main2(),或者它可以是一个需要重新编译某些文件的解决方案,这没关系

6 个答案:

答案 0 :(得分:3)

使用带有单独main的单独编译二进制文件几乎总是更好。

首先,“出于测试目的”可能包括永远不应该在真正的二进制文件中的代码 - 例如测试库代码。这需要第二个二进制文件。

其次,如果没有什么应该省略,你仍然有问题,任何人都可以提供参数或副本,并重命名二进制文件以匹配将提供此功能的argv [0]。

我知道构建项目文件以创建单独的真实和测试程序可能很困难,但在大多数情况下,您将获得更好的结果。

答案 1 :(得分:1)

“只能有一个”你需要做的是创建一组主函数,这些子函数主要根据条件或条件编译语句调用。

答案 2 :(得分:1)

在链接器选项中,您有入口点名称。这样你就可以拥有main1()和main2():

http://msdn.microsoft.com/en-us/library/f9t8842e(v=vs.80).aspx

答案 3 :(得分:1)

#ifdef TESTING
int main() {
    /* whatever */
}
#else
int main() {
    /* whatever else */
}
#endif

答案 4 :(得分:0)

一个应用程序只能有一个main。如果你想运行两件事,你需要在main中完成,通过:

  • 可执行文件的名称(提示:第一个argv是可执行文件的名称)
  • 其他命令行参数(program -thingone
  • 懒洋洋地评论对执行某些操作的函数的调用。

答案 5 :(得分:0)

除了在链接器中指定不同的入口点或者有一个真正的main()调用你想要假装的低级函数是一个顶级函数,你可以为你想要的每个main()添加一个项目。

这在VS中可能有些烦人,因为默认情况下不会设置单独的项目来共享源代码。其他一些IDE使得从共享集的不同子集构建的不同可执行文件(或其他构建产品)变得更容易源代码,但我从来没有发现使用VS的默认值很容易。