兼容函数 (仅限 C)

要使两种功能类型兼容,它们必须满足以下需求:
  • 它们必须在参数数量 (以及省略号的使用) 上一致。
  • 它们必须具有兼容的返回类型。
  • 相应的参数必须与应用缺省自变量提升所产生的类型兼容。
两种函数类型的组合类型确定如下:
  • 如果其中一个函数类型具有参数类型列表,那么组合类型是具有相同参数类型列表的函数原型。
  • 如果两个函数类型都具有参数类型列表,那么将按如下所示确定每个参数的组合类型:
    • 不同等级的参数的组合是应用缺省参数提升所产生的类型。
    • 具有数组或函数类型的参数的组合是调整后的类型。
    • 具有限定类型的参数的组合是声明类型的非限定版本。
例如,对于以下两个函数声明:
int f(int (*)(), double (*)[3]); 
int f(int (*)(char *), double (*)[]);
生成的组合类型将为:
int f(int (*)(char *), double (*)[3]);
如果函数声明器不是函数声明的一部分,那么参数的类型可能不完整。 这些参数还可以通过在其声明符说明符序列中使用 [*] 表示法来指定可变长度数组类型。 以下是兼容函数原型声明器的示例:
double maximum(int n, int m, double a[n][m]);
double maximum(int n, int m, double a[*][*]);
double maximum(int n, int m, double a[ ][*]);
double maximum(int n, int m, double a[ ][m]);
相关信息