Цитата(vmp @ Dec 21 2010, 14:17)

А если функцию описать как static, чтобы компилятор знал, что это локальная функция и из других файлов вызываться не будет?
Это не поможет. Компилятор не обязан вычислять значения функций. Например, даже если вы запишите sin(0.5), то не ожидайте, что компилятор станет вычислять синус в момент компиляции. Функция, она функция и есть.
Вычисления над константами в момент компиляции касаются лишь элементарных операций, как-то - арифметических и логических операций, но отнюдь не вычислений функций в выражениях.
А если вам нужно, чтобы тело функции вычислялось в момент компиляции, тогда используйте не функцию, а дефайн. Например так:
Код
#define func(x) 2*(x)*(x)+4*(x)-6
тогда это действительно будет всегда прямая подстановка, и если x окажется константой, то компилятор вычислит всё выражение func во время компиляции.