Почему присвоение типу функции дает ошибку? - PullRequest
0 голосов
/ 26 ноября 2018

Я читаю этот ответ - о названии функции в качестве указателя , в посте автор сказал, почему она не скомпилирована, неизвестно, это мой вопрос, я хочу знать почему.(Пожалуйста, не раздражайте автора, или я разозлюсь, спасибо.)

Так, как назначить что-то для f?

Это код, скопированный прямо оттуда:

typedef void (*pointer)(void);
typedef void (function)(void);

void foo(void){}

int main()
{
    pointer p;
    function f;

    p = foo; //compiles
    p();

    f = foo; //does not compile
    f();
}

Сообщение об ошибке:

error: cannot convert ‘void()’ to ‘function {aka void()}’ in assignment

1 Ответ

0 голосов
/ 26 ноября 2018

Поскольку function определяется как тип функции, когда вы объявляете «переменную» типа function, она фактически объявляет функцию, а не переменную.Функции не могут быть назначены, поэтому это поведение имеет смысл.

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