Я пытаюсь инициализировать массив структур. Структура содержит указатель на функцию как один из ее элементов данных. Но мой компилятор дает мне ошибку, жалуясь, что Элемент инициализатора не является постоянным. Как инициализировать массив с помощью объявленного указателя функции?Невозможно инициализировать массив со структурой, содержащей функцию pointer -error: элемент initializer не является константой
typedef void (*write_func_ptr_t)(void**, size_t*, char*, const size_t);
typedef bool (*read_func_ptr_t)(char*, const void*, const size_t);
write_func_ptr_t generate_basic_msg_ptr;
read_func_ptr_t handle_basic_msg_ptr;
write_func_ptr_t generate_reg_msg_ptr;
read_func_ptr_t handle_reg_msg_ptr;
struct supported_msg_info
{
const char* const type;
const write_func_ptr_t write_func;
const read_func_ptr_t read_func;
};
static struct supported_msg_info SUPP_MESSAGES[] = {
{ "basic", generate_basic_msg_ptr, handle_basic_msg_ptr },
{ "registration", generate_reg_msg_ptr, handle_reg_msg_ptr }
};
Инициализаторы в C не могут содержать изменяемые переменные, включая указатели на функции. Даже если они были объявлены 'const', они все равно не будут работать, потому что правила инициализации C очень строги. –
Что вы пытаетесь сделать? где - определения функций? –
Определения функций собираются во время выполнения из общей библиотеки с использованием dlsym – agranum