考虑如下的例子:
- void func1( int *data )
- {
- int i;
- for(i=0; i<10; i++)
- {
- anyfunc( *data, i);
- }
- }
尽管*data的值可能从未被改变,但编译器并不知道anyfunc函数不会修改它,所以程序必须在每次使用它的时候从内存中读取它。如果我们知道变量的值不会被改变,那么就应该使用如下的编码:
- void func1( int *data )
- {
- int i;
- int localdata;
- localdata = *data;
- for(i=0; i<10; i++)
- {
- anyfunc (localdata, i);
- }
- }
这为编译器优化代码提供了条件。
|