当您将指向数组类型的指针传递给一个带有指向const数组类型的指针的函数时,GCC会发出警告。
以下代码:
void foo (const float (*x) [2])
{
/* do things */
}
int main()
{
float a [2];
foo (&a); /* produces compiler warning with gcc */
return 0;
}
产生警告:“expected'const float(*)[2]'但是参数类型为'float(*)[2]'”
据我所知,数组类型是它们各自的单独类型,因此你应该能够以这种方式将指针传递给它们。这与将“float **”传递给带有“const float **”的函数的问题不同。或者是吗?
只有gcc似乎会对此发出警告,clang对此非常满意。