我在C文件中定义了一个静态结构p
,如下所示(以下所有代码都在同一个文件中)。但是,当我编译时,我看到编译器优化了p
(在.o
文件中,因此它没有到达链接器)。此处p
未使用'并写入一次,但不在任何地方回读。
编译器如何决定优化它?有人能指出我描述这个的任何文件吗?
static struct
{
int p1;
int p2;
}p;
static void foo(void) //this is getting inlined..
{
p.p1 = 10;
p.p2 = 20;
}
void foo1(void)
{
blah();
foo();
blah1();
}
如果我使p
易变,那么它无论如何都不会得到优化。