gcc не нравится следующий код:
inline const plus(unsigned x,unsigned y) __attribute__((pure));
inline const plus(unsigned x,unsigned y) { return x+y; }
int arr[plus(1,1)];
выдает следующую ошибку:
error: variably modified ‘arr’ at file scope
Единственное, я сделал все, что мог, чтобы сказать gcc, что он может оптимизировать вызов плюс (a, b) к "a + b", и я только передал константы, так что результат должно быть постоянным!
Я что-то упустил, чтобы заставить это работать? Или gcc просто не такой умный?
Между прочим, причина использования плюс (1,1) вместо 1 + 1 в том, что это делает для более общего построения размера массива с использованием макросов.