C++为什么不支持复合文字,因为不好跨类调用?

#include

#define COLS 4

int main()
{
int total;
int(*pt)[COLS];
pt = (int[2][COLS]) { {1, 2, 3, 4}, { 5,6,7,8 } };
total = sum(pt, 2);
printf("total=%d\n", total);
return 0;
}

int sum(int ar[][COLS], int rows)
{
int r, c;
int tot = 0;
for (r = 0; r < rows; r++)
for (c = 0; c < COLS; c++)
tot += ar[r][c];
}

两处错误:
1)sum函数在使用之前未声明或定义;
2)sum函数缺少返回值。

解决办法:
1)在main函数之前声明sum函数原型,即添加 int sum(int ar[][COLS], int rows); (或者将下面的sum函数移动到main函数之前也行)
2)在sum函数体末尾添加 return tot;

tot += ar[r][c];
return tot;