给出编译错误的C全局变量代码
所以我是c新手,写了一些代码,但我不确定为什么在运行它时会出错给出编译错误的C全局变量代码,c,C,所以我是c新手,写了一些代码,但我不确定为什么在运行它时会出错 int GlobalVariable=0; int main() { int LocalVariable=0; //can be used within main() dis(); printf(GlobalVariable); return 1; } int dis() { GlobalVariable=5; //Can be accessed in any functions an
int GlobalVariable=0;
int main()
{
int LocalVariable=0; //can be used within main()
dis();
printf(GlobalVariable);
return 1;
}
int dis()
{
GlobalVariable=5; //Can be accessed in any functions and made changes to it
}
问题是,您使用函数时没有先告诉编译器 在这种情况下,您必须提供函数原型,因为函数定义本身是在main之后提供的
或者,您可以将函数定义放在main之前。但通常情况下,在main之前有函数原型会更好,而且通常将原型放在一个单独的头文件中会更好,这样就更容易直接查看主程序,而不必担心其他函数细节。以下是printf函数的原型:
int printf(const char * restrict format, ...);
看看你在输入什么:
int GlobalVariable=0;
printf(GlobalVariable);
在header.h文件中包含声明/protype函数,而不是源代码。如果需要全局变量,请在源文件中使用类似misc.h{extern int global_variable;/blah blah blah blah variable*/}的内容,包括misc.h int global_variable=37;将包含传递给其他源文件。通常最好在问题中包含完整的错误消息。printf%d\n,GlobalVariable;也许你最好学习/询问错误消息…因为这是C,你应该使用int disvoid声明;表示dis不带参数。@user3386109问题与缺少的函数原型无关?如果没有原型,它甚至不会compile@user3386109我忽略了已经回答过的printf问题——但原型肯定是相关的——不知道你为什么建议otherwise@artm这是值得调用的,但它不是无效代码。但是int是无效的;vs int dis是一个您应该更改的命令。@user3386109哈哈,这就是为什么我看到第一个错误作为隐式声明出现在我面前。。错误,我完全忽略了,向下看printf行..代码在调用printf之前将GlobalVariable更改为5,但是是的,这才是真正的问题。
int GlobalVariable=0;
printf(GlobalVariable);