静态变量(只写,不在任何地方回读)由编译器优化

时间:2015-10-15 09:36:22

标签: c compiler-optimization

我在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易变,那么它无论如何都不会得到优化。

0 个答案:

没有答案