这可能是一个简短而简单的问题,但我从未找到一个令人满意的答案:
在大型C++项目中,main()函数通常包含哪些代码?认为它通常只是初始化一个(包装)类对象并调用它内部的函数来设置事情,这是不是一个不正确的假设?
为什么main()一开始就不是一个方法呢?它是为了保持与C的向后兼容性吗?
发布于 2009-08-01 17:34:53
在我的代码中,它基本上是一个构造函数调用,可能是一个方法调用,以及一些异常处理。这是own of my projects的主要部分(省略了标题和注释,并且像往常一样被SO弄乱了格式):
int main( int argc, char * argv[] ) {
int result = 0;
try {
CLIHandler ch( argc, argv );
result = ch.ExecCommand();
}
catch( const Exception & ex ) {
result = ExceptionHandler::HandleMyError( ex );
}
catch( const std::exception & ex ) {
result = ExceptionHandler::HandleOtherError( ex );
}
catch( ... ) {
result = ExceptionHandler::HandleUnknownError();
}
return result;
}
发布于 2009-08-01 17:28:19
简短的答案是:这要视情况而定。它很可能创建一些在程序持续时间内需要的本地对象,配置它们,告诉它们彼此的情况,并在其中一个对象上调用一个长时间运行的方法。
程序需要一个入口点。如果main
必须是对象上的方法,它应该是什么类类型?
使用main
作为全局入口点,它可以选择要设置的内容。
发布于 2009-08-01 21:44:01
我的main()函数经常构造各种顶级对象,使它们相互引用。这有助于最小化耦合,将不同顶级对象之间的确切关系限制在main中。
通常,这些顶级对象具有不同的生命周期,包括init()、stop()和start()方法。main()函数负责让对象进入所需的运行状态,等待任何指示关闭的时间,然后以受控的方式关闭所有内容。同样,这有助于保持适当的解耦,并将顶级生命周期管理保持在一个易于理解的位置。我在反应式系统中经常看到这种模式,特别是那些有很多线程的系统。
https://stackoverflow.com/questions/1217056
复制相似问题