我正在使用VS2010 我有一个带有几个头的项目和一个带main()函数的文件。 出于测试目的,我希望能够轻松地使用另一个main()函数来实现与原始main不同的东西。 有没有一种简单的方法来定义2“主”功能,并在它们之间轻松切换? 最好的是编译2个二进制文件,一个从main1()开始,另一个在main2(),或者它可以是一个需要重新编译某些文件的解决方案,这没关系
答案 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中完成,通过:
program -thingone
)答案 5 :(得分:0)
除了在链接器中指定不同的入口点或者有一个真正的main()调用你想要假装的低级函数是一个顶级函数,你可以为你想要的每个main()添加一个项目。
这在VS中可能有些烦人,因为默认情况下不会设置单独的项目来共享源代码。其他一些IDE使得从共享集的不同子集构建的不同可执行文件(或其他构建产品)变得更容易源代码,但我从来没有发现使用VS的默认值很容易。