Извлечь содержимое с помощью макроса в C - PullRequest
0 голосов
/ 11 октября 2019

Как заполнить массив указателей на функции из существующего макроса списка задач?

Список задач выглядит следующим образом:

#define execute_list \
printhello();   \
printbye();

printhello и printbye - существующие функции.

Нам нужно заполнить массив указателей функций адресом этих функций.

    void (*my_fptr_array[])(void) =
   {
        &printhello,
        &printbye,
   };

Это должно происходить автоматически через макрос. Что-то вроде:

void (*my_fptr_array[])(void) =
       {
            EXTRACT_FUNCTION(0,execute_list),
            EXTRACT_FUNCTION(1,execute_list)
       };

возможно ли это в C?

1 Ответ

0 голосов
/ 11 октября 2019

Вам не нужен макрос для этого. Если у вас есть массив, вы можете легко выполнять эти функции, обходя массив.

Другими словами, ваше требование неверно. Вместо того, чтобы пытаться извлечь что-либо из списка выполнения, попробуйте построить список выполнения из более простого массива указателей на функции.

(Вы можете использовать макрос X для этого, но я не вижу преимущества, кроме, может быть,сэкономив немного лишних циклов.)

...