Получение «error: недопустимое использование выражения void» при попытке использовать указатель на функцию - PullRequest
0 голосов
/ 20 октября 2019

У меня есть две функции:

void A (void(*fptr)(void*))

void B(void* string)

В основном я вызываю функцию A следующим образом;

char* bird = (char*)malloc(sizeof(char)*100)
strcpy(bird, "bird");

A((*B)(bird)); //error: invalid use of void expression

Однако, когда я пытаюсь скомпилировать программу, я получаюошибка при вызове функции A. Я почти уверен, что неправильно использую указатель на функцию. Может ли кто-нибудь дать мне руководство?

1 Ответ

1 голос
/ 20 октября 2019

Возможно, ваше намерение :


#include <stdlib.h>
#include <string.h>

void A(void(*fptr)(void*), void *ptr); // two arguments for A()
void B(void* string);


int main(void)
{
char *bird = malloc(100);
strcpy(bird, "bird");

A(&B, bird);  // OR: A(B, bird); which is the same
return 0;
}
...