我有结构
struct priv_data { int a ; int b }
struct priv_data priv;
int func()
{
a_val = priv.a;
b_val = priv.b;
printf("a+b=%d , a-b = %d , a*b = %d , a/b = %d",(a_val+b_val),
(a_val-b_val),(a_val*b_val),(a_val/b_val));
}
我的问题是编译器(工具链)作为智能避免priv.a
到a_val
的第一份副本,因为a_val
被用作只读。代替a_val
使用priv.a
所指的地方,以避免额外的副本。
答案 0 :(得分:0)
我认为这取决于编译器以及编译选项。但是,我已经看到了多个使用O2编译时优化这些中间变量的情况。