请大家帮我看一下这是怎么回事
为什么注释了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);
}
这样修改后,你的代码就可以正确执行了。
页:
[1]