Если эта функция Func1
встроена,
inline int Func1 (int* a)
{
return *a + 1;
}
int main ()
{
int v = GetIntFromUserInput(); // Unknown at compile-time.
return Func1(&v);
}
Могу ли я ожидать, что умный компилятор устранит операции с указателями? ( & a
и * a
)
Как я предполагаю, функция будет преобразована во что-то вроде этого,
int main ()
{
int v = GetIntFromUserInput(); // Unknown at compile-time.
int* a = &v;
return *a + 1;
}
и, наконец,
int main ()
{
int v = GetIntFromUserInput(); // Unknown at compile-time.
return v + 1;
}
операции с указателями выглядят легко устраняемыми. Но я слышал, что работа с указателем - это нечто особенное и не может быть оптимизировано.