C определение препроцессора для сгенерированных имен функций

Оказывается, что довольно легко быть завершенным Тьюрингом. Например, Вам только нужны эти 8 крыльев инструкций BrainF ** k, и главный, Вам действительно только нужно одна инструкция .

основа их язык является конструкцией цикличного выполнения, и как только у Вас есть неограниченные циклы, у Вас есть свойственная проблема остановки. Когда цикл завершится? Даже на неполном по Тьюрингу языке, который поддерживал неограниченные циклы, Вы могли бы все еще, имеют проблему остановки в практика .

, Если Вы хотите, чтобы все Ваши программы завершились, затем просто необходимо записать код тщательно. Определенный язык может быть больше к Вашей симпатии и стилю, но я не думаю, что любой язык может гарантировать абсолютно, что получающаяся программа остановится.

15
задан Brian Tompsett - 汤莱恩 11 February 2016 в 22:37
поделиться

1 ответ

Вам необходимо предоставить дополнительный уровень «функционального макроса» для обеспечения правильного расширения:

например,

#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;
}
31
ответ дан 1 December 2019 в 02:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: