C语言的头文件的全局变量

请问我像这样在头文件中定义了flag的全局变量,但是在使用的时候并没有在其他源文件在再次int,只是通过判断将flag赋值1或0,但是却报错说flag重定义,请问大家这是怎么回事

img

img


而且如果将全局变量flag放在源文件中,代码就可以正常运行,不会报错,请问在头文件中该如何正确定义全局变量并且在源文件中又该如何正确使用头文件定义的全局变量

改成 inline int flag = 0 试试?

【相关推荐】



  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7801160
  • 除此之外, 这篇博客: 牛客刷题记录之语法入门循环结构篇1.0中的 总结: 可以利用flag指针思想,来判断什么时候循环结束。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    #include<stdio.h>
    int main(){
    	char a;
    	int flag;
    	int i,j;
    	scanf("%c",&a);
    	int as=a-64;
    	for ( i=0;i<as;i++){
    		char b='A';
    		flag=0;
    		for (j=0;j<as-1-i;j++){
    			printf(" ");
    		}
    		while (flag<=i){
    			printf("%c",b);
    			flag+=1;
    			b+=1;
    		}
    		flag-=1;
    		b-=1;
    		if (flag!=0){
    			while (flag){
    				b-=1;
    				printf("%c",b);
    				flag--;
    			}
    		}
    		printf("\n");
    	}
    	return 0;
    }

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

在game.h 文件里,第7行变量定义int flag = 0; 这句改为:extern int flag;
在game.c 文件里,定义全局变量并初始化:int flag = 0;