对于COFF ABI和EABI,我们应将注意力着眼于EABI上,因为它是我们今后项目开发首选的接口方式。本文就将对EABI接口的初始化方式进行深入介绍。
1、自动初始化
我们首先介绍一下自动初始化的概念,其英文原文如下:Any global variables declared as preinitialized must have initial values assigned
to them before a C/C++ program starts running. The process of retrieving these variables‘ data and initializing the variables with the data is called autoinitialization.(在C/C++程序运行之前,任何被声明为预初始化的全局变量都必须赋予初值。取出这些变量的数据并将这些数据赋予变量的进程,我们称其为自动初始化。)
在ANSI C中,全局和静态变量如果没有明确赋予初值,则在程序运行之前都必须设置为0。C/C++的EABI编译器支持能够对这些未初始化的变量进行特定操作,我们可以通过--zero_init=off链接选项予以实现。这个特性是COFF
ABI所不支持的。