我正在阅读this answer - about function name as pointer,作者在帖子中说为什么不编译它是未知的,这是我的问题,我想知道为什么。 (请不要惹恼作者,否则我会生气的,谢谢。)
那么如何为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
答案 0 :(得分:2)
由于function
被定义为函数类型,因此当您声明类型function
的“变量”时,它实际上是声明一个函数,而不是变量。无法分配功能,因此这种行为很合理。