本帖最后由 老树昏鸦 于 2009-8-22 10:50 编辑
潜水多天,终于逮到个有点意思的帖子
函数返回值不是左值。
所以你的声明虽然合法,但没有意义,编译器可能会给出警告,但不会产生错误。
编译错误另有其因,但不是2楼所说的情况。
const u8 (*( fun[2]))(u8 code) = {fun1,fun2};
声明中*号后的一对圆括号作为分隔符没有任何副作用,因此不是产生错误的原因。
如果你想声明指针常量,应该这样使用const类型修饰符:
u8 (* const fun[2])(u8 code) = {fun1,fun2};
调用表达式:
fun[0](code)
fun[1](code)
|