我使用VS2010 我有几个头一个项目,一个文件与main()函数。 为了测试的目的,我希望能够轻松实现另一个main()函数,该函数会实现与原始主体不同的东西。 有没有简单的方法来定义2“主”功能,并轻松地在它们之间切换? 最好的做法是编译2个二进制文件,一个在main1()开始,另一个在main2(),或者它可以是需要重新编译某些文件的解决方案,无所谓轻松切换不同的main()
回答
在连接选项你有入口点的名字。这样,您就可以拥有MAIN1()和MAIN2():
http://msdn.microsoft.com/en-us/library/f9t8842e(v=vs.80).aspx
不,这会跳过整个CRT初始化,并且围绕着一个可怕的想法。 –
这不是一个好主意。这可能导致具有相同名称和不同功能的多个二进制文件。 –
@CatPlusPlus AFAIK,这并没有设置真正的入口点,而是由真正的main调用的入口点,所以CRT init不会被跳过 - 就像静态变量构造函数不是。 –
“只有一个“你需要做的是创建一组主要调用条件或条件编译语句的子函数。
一个应用程序只能有一个main
。如果要运行两件事情,你需要在主这样做,通过:
- 可执行文件运行的名称(提示:第一argv的是可执行文件的名称)
- 进一步的命令行参数(
program -thingone
) - 懒洋洋地对那些做某事的函数进行注释。
#ifdef TESTING
int main() {
/* whatever */
}
#else
int main() {
/* whatever else */
}
#endif
除了在连接指定不同的入口点或者有一个真正的main()调用要假装取较低的水平功能是一个顶级函数,你可以为每个你想要的main()添加一个项目。
这在VS中可能有些恼人,因为单独的项目并未默认设置为共享源代码。其他一些IDE可以更容易地使用共享集的不同子集构建不同的可执行文件(或其他构建产品)的源代码,但我从未发现使用VS的默认设置很容易。
你几乎总是使用一个单独的编译二进制文件和单独的主文件。
首先,“用于测试目的”可能包括代码,不应该成为真正的二进制 - 如测试库代码。这需要第二个二进制文件。
其次,如果有什么东西是应该被忽略,你还有任何人都可以提供一个参数或复制和重命名二进制相匹配的argv [0],这将使该功能的问题。
我知道这可能很难建筑师项目文件创建单独的真实测试程序,但在大多数情况下,你将有一个更好的结果。
- 1. 在Java库的两个不同实现之间轻松切换?
- 2. 如何轻松切换Webrat和Selenium?
- 3. 在C++中轻松转换不同的几何类?
- 4. 帮助上下文轻松切换任务的习惯
- 5. 如何使用Repository模式让ORM轻松切换?
- 6. Android轻松切换应用颜色方案
- 7. 如何在CUDA中轻松切换单精度和双精度?
- 8. VS 2010轻松切换单/双显示器
- 9. 在发布时轻松切换ConnectionStrings到Azure
- 10. 如何轻松地切换碎片容器?
- 11. 轻松地将Android库切换到应用程序(&返回)
- 12. 使用轻灵还是不轻松?
- 13. 如何轻松交换导入的类?
- 14. jquery ui“切换类”不宽松
- 15. PHP快速轻松地替换字符?
- 16. 轻松地将NSComboBox转换为NSTextField
- 17. 在Android中轻松转换xml
- 18. 在NSMutableArray中轻松交换对象
- 19. 轻松在Java中
- 20. 轻松编辑formatlistpat?
- 21. 轻松验证CheckBoxList
- 22. 轻松部署EJB
- 23. 轻松缩放UIScrollView
- 24. 如何轻松切换到PyCharm Django项目中的另一个SVN分支
- 25. 如何在启用调试的Android 6.0设备上更轻松地切换MTP?
- 26. 如何在Eclipse中轻松运行不同的配置?
- 27. 轻松禁用app4的log4j?
- 28. 轻松拨动到的IntelliJ
- 29. 在feed_dict和队列之间轻松切换以输入到TensorFlow模型
- 30. 在Mac应用程序中轻松切换“视图控制器”(类似于iOS)
真的很重要什么叫不同的功能?在同一个Visual C++ 2010项目中不能有多个'main'函数,但可以有条件地从'main'内部调用任何你喜欢的函数。 –
这是一个愚蠢的想法。 –