运行代码时是否可以在 main() 之前调用其他方法/指令



可能的重复项:
在进入主功能之前,你能用C++打印任何东西吗?

在调用 int main() 之前是否有可能运行任何其他指令?

int main(){cout<<"a";}

在main()中调用之前,有对cout<<"b"的调用;之前某个地方。也许这 #define 的事情可以提供帮助。

你不需要define .只需创建一个全局对象(在同一文件中),它的 ctor(或你用来初始化它的任何其他东西,比如调用函数)就会在调用 main 之前运行。

编辑:同样,这些全局对象将在主退出后销毁,因此它们的析构函数将在那时运行。

全局对象是在 main() 运行之前构造的。因此,您可以定义一个类,将代码放入其构造函数中,然后声明该类的全局实例:

class temp
{
public:
    temp()
    {
        cout << "before main" << endl;
    }
    ~temp()
    {
       cout << "after main" << endl;
    }
};
temp t;
int main()
{
    cout << "in main" << endl;
    return 0;
}

全局变量也在 main() 运行之前初始化。 您可以定义一个返回值的函数,然后调用该函数并将值分配给其声明中的全局变量,如@jrok所示。

一些编译器还支持 #pragma startup 语句在启动时执行用户定义的函数(以及相应的 #pragma exit 语句用于关闭):

void beforeMain()
{
    cout << "before main" << endl;
}
#pragma startup beforeMain
void afterMain()
{
    cout << "after main" << endl;
}
#pragma exit afterMain
int main()
{
    cout << "in main" << endl;
    return 0;
}

最新更新