这个警告为啥?
本帖最后由 一世轻尘 于 2020-12-20 09:59 编辑#include<stdio.h>
#include<conio.h>
extern int m=100;
int main()
{
void print();
for(int i=0;i<15;i++)
print();
getch();
}
void print()
{
static int x=1000;
printf("x is %d,m is %d\n",x,m);
x++,m++;
}
gcc编译{:10_254:} 本帖最后由 jackz007 于 2020-12-20 10:45 编辑
这一句
extern int m=100;
改为
int m=100;
"extern" 的意思是这个变量来自其它的源代码文件。在使用多个源代码文件编程时才有用。 jackz007 发表于 2020-12-20 10:43
这一句
改为
可是好像只有gcc编译器不能,而且我书上说是可以这样,而且我上网查了一下也是一样。听说vc编译就不会警告 一世轻尘 发表于 2020-12-20 10:55
可是好像只有gcc编译器不能,而且我书上说是可以这样,而且我上网查了一下也是一样。听说vc编译就不会警 ...
请参考这一篇文章,说得比较得体
https://www.jianshu.com/p/111dcd1c0201 jackz007 发表于 2020-12-20 11:07
请参考这一篇文章,说得比较得体
https://www.jianshu.com/p/111dcd1c0201
可是我在函数外定义且初始化了,为啥会警告呢? jackz007 发表于 2020-12-20 11:07
请参考这一篇文章,说得比较得体
https://www.jianshu.com/p/111dcd1c0201
编译器的问题吗 一世轻尘 发表于 2020-12-20 11:12
编译器的问题吗
编译器没有任何问题,是你自己的问题,因为,没有人这么定义变量,你这是在声明,而不是在定义变量,你的这种写法,编译器不会为 m 分配内存空间,而按照你的预期,是必须要分配到的,这就是你代码的问题所在。
页:
[1]