|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为什么注释了func函数的声明后,main函数中的func前面加上extern后就不执行这一行了
- #include <stdio.h>
- //void func(void);
- int main(void)
- {
- extern int count;
- extern func();
- count++;
- printf("In main, count = %d\n", count);
- return 0;
- }
- int count;
- void func(void)
- {
- count++;
- printf("In func, count = %d\n", count);
- }
复制代码
结果:
In main, count = 1
问题出在你的代码中,你在main函数中使用了extern来声明func函数,但实际上func函数是没有被声明为外部函数的。当你注释掉func函数的声明后,编译器会默认认为func函数是一个int类型的函数。然而,如果你使用extern来声明func函数,编译器就会认为func函数是一个未知类型的函数,因此在执行count++时会遇到问题。
解决方案是在main函数中使用void func(void)来声明func函数,这样编译器就知道func函数的类型,就可以正确执行了。代码应该修改为:
- #include <stdio.h>
- void func(void);
- int main(void)
- {
- extern int count;
- extern void func();
- count++;
- printf("In main, count = %d\n", count);
- return 0;
- }
- int count;
- void func(void)
- {
- count++;
- printf("In func, count = %d\n", count);
- }
复制代码
这样修改后,你的代码就可以正确执行了。
|
|