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

Error while declaring ptr using calloc in global scope

[cquery] 缺少类型说明符,默认为 'int' [-Wimplicit-int]
[cquery] 使用不同类型重新定义 'ptr':'int' vs 'int *

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

我该如何解决这个错误?这背后的原因是什么。

对于初学者这个

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

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

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

此外,可以使用 compile-time 常量初始化具有静态存储持续时间的变量(并且文件范围变量具有静态存储持续时间)。

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

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