Указатель на функцию - PullRequest
       3

Указатель на функцию

0 голосов
/ 02 января 2011

В моем файле Ах

Node RemoveString(Node (*)(char,Node));
Node Minimum(char, Node);

В моем файле Ac

Node Minimum(char type, Node node) {......}
Node RemoveString(Node(*Minimum)(char, Node)) {...}

В моем файле Bh

void Test_Function(Node (*)(char,Node));

В моем файле Bc

void Test_Function(Node(*Minimum)(char, Node)) {...}

В моем Main.c

Test_Function(Node(*Minimum)(char, Node));//This line has error.

Узел определен в АBh включают "А"Main.c включает "Bh"

Компилятор жалуется на эту ошибку: ожидаемое выражение перед NodeКто-нибудь может сказать мне, почему? Что я сделал не так в этом случае?

Ответы [ 3 ]

4 голосов
/ 02 января 2011

Когда вы вызываете функцию, вы просто используете имя функции, а не полное определение снова.Итак, эта строка:

Test_Function(Node(*Minimum)(char, Node));

Должно быть:

Test_Function(&Minimum);

Конечно, вы также должны убедиться, что функции Test_Function и Minimum определены (т.е. включены файлы) перед этим оператором.1007 *

1 голос
/ 02 января 2011

Выражение, которое вы используете как аргумент Test_Function, является типом, а не указателем на функцию. Указатель на функцию - это просто имя функции:

Test_Function(Minimum);
0 голосов
/ 02 января 2011

Вы отметили это c, так что, я так понимаю, вы используете компилятор C (не C ++) - верно? В этом случае вам нужно либо написать struct Node в каждом объявлении, либо использовать typedef.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...