在全局范围内使用calloc声明ptr时出错

问题描述

[cquery]类型说明符丢失,认为'int'[-Wimplicit-int]
[cquery]使用不同类型重新定义了'ptr':'int'与'int *

int *ptr,size=50;
ptr=(int*) calloc(size,sizeof(int));

我该如何解决错误?这是什么原因?

解决方法

对于初学者来说

ptr=(int*) calloc(size,sizeof(int));

不是声明,而是表达式语句。

您不能在文件范围内放置语句。

此外,可以使用编译时常量来初始化具有静态存储持续时间的变量(文件范围变量具有静态存储持续时间)。

因此,您应该将上面的语句放在某些函数中,例如main中。

还考虑重新设计程序的可能性,使其具有尽可能少的文件范围变量。