main
函数在程序启动时被调用,并且不允许递归调用它。这意味着在执行程序时,main
函数只能有一个堆栈帧。如您所知,如果某些东西仅被实例化一次,则可以将其设为静态。考虑到存在一个巨大的结构,该结构在main中实例化,因此在程序的生命周期中仅实例化一次。通过将变量设为静态,分配几乎在编译时完成,并且不会浪费堆栈空间。
int main(int argc, char** argv) {
// Huge structure, needs to be initialized with
// program arguments
ScriptInterpreter interp { argc, argv };
bool success = interp.run();
return success ? EXIT_SUCCESS : EXIT_FAILURE;
}
问题1:在主要静态变量中创建变量是一种好习惯吗?
int main(int argc, char** argv) {
...
static ScriptInterpreter interp { argc, argv };
...
}
问题2:是否有编译器已经对main
函数进行了隐式优化?