LINUX.ORG.RU

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

anonymous
()
Ответ на: комментарий от anonymous

Что значит может? А может не выполнять? :)

alexru ★★★★
() автор топика
Ответ на: комментарий от anonymous

препроцессор и компиляция это разные стадии

Reset ★★★★★
()
Ответ на: комментарий от namezys

>Ну я имел в виду шаблоны такую вещь позволяют мутить

генерировать имя переменной? можно пример кода? :)

jtootf ★★★★★
()

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

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

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 ★★★★★
()

нельзя.

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

anonymous
()

в тупую:

#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
()
Ответ на: комментарий от anonymous

в догонку:

#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
()
Ответ на: комментарий от anonymous

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

svu ★★★★★
()
Ответ на: комментарий от svu

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

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

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

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 ★★★★★
()
Ответ на: комментарий от dilmah

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

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

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