我在这一行收到编译错误消息(请参阅下面的代码):
z = f;
错误消息是
lvalue required as left operand of assignment
我正在尝试利用typedef char (*fptr1())();
但我没有成功。
我做错了什么?
#include <stdio.h>
char f1() {
return 'a';
}
char f2() {
return 'b';
}
typedef char (*fptr)();
typedef char (*fptr1())();
//f is a function( char ) that returns a pointer to a function which returns a char.
fptr f( char c ) {
if ( c == 'a' )
return f1;
else
return f2;
}
int main() {
fptr1 z;
char c = 'a';
fptr fp1 = f( c );
printf( "%c\n", fp1());
//z = f; //error: lvalue required as left operand of assignment
//fptr fp2 = z( c );
//printf( "%c\n", fp2());
}
答案 0 :(得分:2)
你的第二个定义是错误的。你想要一个函数指针,该函数指向一个带有char并返回fptr
的函数,因此你将它定义为
typedef fptr (*fptr1)(char);
或者如果您不想在typedef中使用typedef
typedef char (*(*fptr1)(char))();