__attribute__((const))
в GNU C выражает намерение автора функции не зависеть ни от какого значения, кроме входных аргументов.
Это позволяет компилятору оптимизировать несколько вызовов с одинаковыми аргументами для такой функции в одном вызове без необходимости анализировать тело функции. Это особенно полезно, если тело функции находится в другой единице перевода.
В случае int Add( int x , int y ) __attribute__((const))
несколько вызовов, скажем, Add(2,3)
, могут быть объединены в один вызов, а возвращаемое значение может быть кэшируется, не зная, что на самом деле делает Add
.
Он также позволяет компилятору проверять, действительно ли функция соответствует объявленному намерению.
См. эту статью LWN * 1016. * для более подробной информации и примера.