要使函数兼容,请遵守以下规则:
要使两个函数类型兼容,它们的返回类型必须兼容。如果任一或两个函数类型都有原型,则规则将更加复杂。
为了使具有原型的两个函数类型兼容,它们还必须具有相同数目的参数,包括省略号 (…) 表示法的使用,而且对应参数必须是参数兼容的。
为了使旧式函数定义与具有原型的函数类型兼容,原型参数不得以省略号 (…) 结尾。应用缺省参数提升后,每个原型参数与对应的旧式参数必须是参数兼容的。
为了使旧式函数声明(而不是定义)与具有原型的函数类型兼容,原型参数不得以省略号 (…) 结尾。所有原型参数的类型必须不受缺省参数提升的影响。
为了使两种类型是参数兼容的,在删除顶级限定符(如果有)后,以及将函数或数组类型转换为相应的指针类型后,这两种类型必须是兼容的。