Оказывается, что довольно легко быть завершенным Тьюрингом. Например, Вам только нужны эти 8 крыльев инструкций BrainF ** k, и главный, Вам действительно только нужно одна инструкция .
основа их язык является конструкцией цикличного выполнения, и как только у Вас есть неограниченные циклы, у Вас есть свойственная проблема остановки. Когда цикл завершится? Даже на неполном по Тьюрингу языке, который поддерживал неограниченные циклы, Вы могли бы все еще, имеют проблему остановки в практика .
, Если Вы хотите, чтобы все Ваши программы завершились, затем просто необходимо записать код тщательно. Определенный язык может быть больше к Вашей симпатии и стилю, но я не думаю, что любой язык может гарантировать абсолютно, что получающаяся программа остановится.
Вам необходимо предоставить дополнительный уровень «функционального макроса» для обеспечения правильного расширения:
например,
#define SIGNAL1 SignalName1
#define SIGNAL2 SignalName2
#define MAKE_FN_NAME(x) void Callback_ ## x (void)
#define FUNCTION_NAME(signal) MAKE_FN_NAME(signal)
FUNCTION_NAME(SIGNAL1)
{
return;
}
output:
$ gcc -E prepro.cc
# 1 "prepro.cc"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "prepro.cc"
void Callback_SignalName1 (void)
{
return;
}