是否有一个gcc标志来初始化本地变量存储?

Gre*_*ill 18 c gcc local

IBM AIX xlc编译器提供了一个标志,用于生成初始化本地变量存储的代码:

      initauto=<hh>
                  Initialialize automatic storage to <hh>. <hh> is a
                  hexadecimal value.  This generates extra code and
                  should only be used for error determination.
Run Code Online (Sandbox Code Playgroud)

我认为MSVC编译器对调试版本做了类似的事情,但在这一点上我的内存可能很模糊.

海湾合作委员会是否有同等选择权?

BRP*_*ock 10

好的,我能提供的最佳答案.

http://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html通过省略说"不".没有任何文档可以将堆栈擦除代码注入到输出中.

尽管我可以猜到,唯一可行的方法是在每个嵌入式词汇框架的开头注入一些memset类似的代码(可能只是一些简单的mov操作,但是仍然如此),其中创建了一个自动变量.尽可能接近 - 我与GCC内部的专家相差甚远,但是 - 似乎没有任何记录会这样做.

在下面的内容中,GCC Internals的PDF gccint.pdf(http://gcc.gnu.org/onlinedocs/gccint.pdf)第361页定义了在进入函数时帧指针调整的GCC名称调用步骤是prologue.(但我真的不知道/理解这是否适用于函数中的其他词法范围.)由于这应该发生在机器定义(md)文件中,因此似乎必须为CPU体系结构定义任何此类选项.我在http://gcc.gnu.org/viewcvs/trunk/gcc/config/i386/上搜索了他们的在线ViewCVS,并找到prologue了i386.md左右11,893行的副本(至少有一份). -the-function-expansion几跳,似乎没有任何东西可以像这样发出条件代码.

但这个GCC的引擎盖下的东西有点整洁......