LINUX.ORG.RU

Re: Заставить препроцессор вычислять значение

нет

anonymous
()

Re: Заставить препроцессор вычислять значение

gcc 4.3 может выполнять вычисления над константами во время компиляции.

anonymous
()

Re: Заставить препроцессор вычислять значение

Языки говорят, m4 умеет эти и другие вкусности.

balodja ★★★
()

Re: Заставить препроцессор вычислять значение

нет

dilmah ★★★★★
()

Re: Заставить препроцессор вычислять значение

Сишный - не может.

А вот в плюсах что-нибудь типа

template <typename T, int x> class foo {static T value;};

template <typename T, int x> T foo<T,x>::value;

foo<double, 1+3>::value = 5;

std::cout << foo<double, 2+2>::value << std::endl;

вполне сработает.

Miguel ★★★★★
()

Re: Заставить препроцессор вычислять значение

нельзя.

смотри в сторону m4, или вообще - лиспа

anonymous
()

Re: Заставить препроцессор вычислять значение

в тупую:

#define S00 0
#define S01 1
#define S02 2
#define S03 3

#define S10 1
#define S11 2
#define S12 3
#define S13 4

#define S20 2
#define S21 3
#define S22 4
#define S23 5

#define S30 3
#define S31 4
#define S32 5
#define S33 6

#define SUM(a,b) a + b = S##a##b

SUM(0,0)
SUM(0,1)
SUM(1,2)
SUM(3,2)

вывод:
0 + 0 = 0
0 + 1 = 1
1 + 2 = 3
3 + 2 = 5

anonymous
()

Re: Заставить препроцессор вычислять значение

в догонку:

#define SUM2(a,b) S##a##b
#define V3(prefix,s) prefix##s
#define V2(prefix,s) V3(prefix,s)
#define V1(prefix,a,b) V2(prefix,SUM2(a,b))

V1(variable_,1,2)
V1(variable_,2,0)
V1(variable_,1,1)

вывод:
variable_3
variable_2
variable_2

anonymous
()

Re: Заставить препроцессор вычислять значение

boost preprocessor?

Assaron
()

Re: Заставить препроцессор вычислять значение

Доп. подсказка - файл со всеми возможными Sxy можно генерить автоматически (тем же шеллом или перлом), потом делать его #include

svu ★★★★★
()

Re: Заставить препроцессор вычислять значение

> Доп. подсказка - файл со всеми возможными Sxy можно генерить автоматически

И еще подсказка - многие сделают тебе тестикулоэктомию за такие трюки.

tailgunner ★★★★★
()

Re: Заставить препроцессор вычислять значение

Programs that write programs that write programs (...) Too complicated? A hackers technique which can not be applied to the “real world” problems? This is exactly how IT industry specialists think about metaprogramming. And this is a completely wrong notion! Metaprogramming is the only known way to reduce the complexity significantly. In some areas “programs that write programs” are accepted by the industry due to the enormous level of complexity of the corresponding handwritten code — regular expressions, lexers and parsers generators to name a few, and code wizards and templates in popular “integrated development environments” are also widely used.

dilmah ★★★★★
()

Re: Заставить препроцессор вычислять значение

> Programs that write programs that write programs (...) Too complicated?

Не в этом дело. Просто слишком уродское решение непонятной проблемы.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.