Я видел часть кода в одном из старых файлов.Функция Объявление указателя функции и определение функции вместе
void (*const m_exec[N_EXECS])(void) =
{
#define PROCESS_DEF_TIMED(name) name, // defines macro for use in proclist.h
#define PROCESS_TIMED // define switch for section in proclist.h
#include "proclist.h"
#undef PROCESS_TIMED // undefine switch
#undef PROCESS_DEF_TIMED // undefines macro
};
Я не могу понять значение этого кода. Является ли это указателем на функцию с определением объявления и определения функции вместе? Но если я пытаюсь объявить подобный указатель функции, как показано ниже, я получаю ошибку компиляции
void (*voidFptr)(void) =
{
printf("Hello\n");
}
Кроме того, что #define здесь? Почему это внутри функции, я не уверен.
Он заполняет массив указателей функций из списка, содержащегося в '' proclist.h''. –
Запустите файл через препроцессор и посмотрите на предварительно обработанный вывод. –
Вы просмотрели файл заголовка? Возможно, вы также заметили, что синтаксис оригинала отличается от вашего. В программном коде каждый персонаж важен, часто даже в комментариях и строковых литералах. – Olaf