Директивы препроцессора
Не специалист, но м.б. шаблоны?
на шаблонах-то точно можно
А с конечным, но сколь угодно большим?Если ограничения на размер кода нет, то легко, просто увеличиваем размер кода, время компиляции растет неограниченно.
Если ограничение есть, то, очевидно, нельзя. Потому что существует только конечное число программ с размером кода меньше данного ограничения и время их компиляции либо меньше некоторой константы, либо бесконечно.
ну или минут 10 хотя бы
Да, про сколь угодно большое я дал маху) имеется ввиду, какова конечная достижимая плотность "время компиляции, на символ"?
просто большой код легко генерируется пачкой дефайнов, у нас в одном ядерном модуле есть такая хреновина — десяток строк макросов компилируются минуту, жрут при этом несколько гигабайт памяти и генерируют полмегабайта кода. если добавить ещё несколько строк то скомпилировать уже не получается
/me вспомнил, как на школьной олимпиаде кто-то скормил проверяющей системе программу на фри паскале, что она скомпилировалась в нечто размера больше 4гиг, чем обвалила проверяющую систему.
Да, про сколь угодно большое я дал маху) имеется ввиду, какова конечная достижимая плотность "время компиляции, на символ"?Тут ещё вопрос в ограничениях компилятора. Например, вот этот код можно было бы компилировать вечно, если бы можно было вечно увеличивать -ftemplate-depth:
#include <iostream>
template<int N> long oh_shit
{
return oh_shit<N-1> + oh_shit<N+1>
}
template<> long oh_shit<1>
{
return oh_shit<10000> - oh_shit<82000>
}
template<> long oh_shit<2000000000>
{
return oh_shit<20000> - oh_shit<7>
}
int main
{
std::cout << oh_shit<1000> << std::endl;
return 0;
}
Оставить комментарий
Anna551
Возможно ли написать программу с бесконечным временем компиляции? А с конечным, но сколь угодно большим?