考虑这个程序:
int func2(char x, char y)
{
return x+y;
}
int (*fp1)(char);
void main()
{
fp1 = func2; /* func2 has one more argument than fp1 */
}
最终分配是否符合 C90 标准?
Keil C51 v9.06 在没有警告的情况下接受该程序,而 gcc 则抱怨
警告:来自不兼容的指针类型的赋值
我想知道这是否是 Keil 编译器中的错误,或者实际上是一种符合 C90 的处理方式。
更新:根据C99 上的这个答案,相应的演员表是合法的。但是如果你调用函数指针,你会得到未定义的行为。这是否意味着转让也是合法的?