C语言中多文件的全局变量声明问题

具体问题请麻烦看链接

C语言遇到问题

我写了一个函数void match(char* list)/*作用是在list字符串中查找给定子字符串*/
又写了一个函数void find(void (*match)(char*))/*因为想用函数指针,就把match函数传递进去了
然后find()函数遍历字符串数组。
最后在main()函数中写字符串数组char* shuzu[]的具体内容
然后把match函数,find函数,main函数保存在不同的.c文件中
最后写了一个头文件,其中保存了函数申明,还有那个字符串数组的申明
我是这样写的extern char* shuzu[];

最后遇到的问题是编译时告诉我find()函数遇到未定义变量shuzu[],,可我不是把它定义成
全局变量保存在头文件中了吗?

3个回答

把数组shuzu定义放到main函数外面,才是全局数组。
头文件的声明保持不变。
extern 声明该变量是外部或本文件的全局变量。

 #include<stdio.h>
#include"declare.h"
 char* shu_zu[]={
                "wodemingzijiaozuowuguannan",
                 "wujunyishiwofuqing",
                 "liuhongjushiwomuqing",
                 "woxihuanwozijiwuguannan"
        };
int main()
{
 find(match);
 return 0;
}

你在main函数了写了shuzu的定义,但是,这并不是全局变量,只是在main函数里的局部变量。你应该在main外面这样写,extern char* shuzu[]=...并把头文件的声明去掉

u013610563
亦楠_把一件事做好 回复亦楠_为自己: 最后编译通过了
3 年多之前 回复
u013610563
亦楠_把一件事做好 谢谢你的提示,我把shuzu写到main函数外面就可以了,没有改头文件中写的extern char*shuzu[]的声明,最后编译
3 年多之前 回复

把代码贴在codepad.org上,你的链接提示“正在维护”,代码看不到

u013610563
亦楠_把一件事做好 问题解决了,谢谢了
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!

相似问题

3
内部变量和外部变量就是局部变量和全局变量吗?
4
IIS中全局变量无故被清空了
1
C#中如何声明一个自定义类型的全局变量
3
在C语言编程中,我定义的全局变量足有2M大小,但生成的程序只有20k,怎么回事?
1
php全局变量修改问题(新手请教)
6
c结构体全局变量的使用?
8
java 中全局变量与Scanner问题
1
全局变量释放的顺序怎样的?
2
全局变量监控问题。谢谢了!
1
请教一下VC全局变量和全局函数的问题
3
Java局部变量全局变量递归问题
2
vb的exe内存能不能直接同时读取ocx的内存里定义的全局变量的变量名?
2
怎么遍历求一个ocx里关联了多少exe内存里的全局变量?求这些全局变量的变量名的做法是什么?
2
ocx里出现同名字的全局变量,会不会覆盖主程序中对应的全局变量名?
2
请问vb语言中怎么区隔ocx内存中的全局变量和exe内存中的全局变量的定义?
2
vb编程语言系统中拖入控件编写对应的事件,控件里调用exe里的窗体上的全局变量
2
在vb编程中我们一般定义全局变量在标准模块中,标准模块会像ocx那样自动分配的内存变量么?
2
怎么针对ocx访问exe的内存变量来定义exe里的全局变量,定义成public型的为什么还是不可以?
2
vb语言关于多个ocx和主程序共享数组的问题,每个数组可以拥有一个名字作为全局变量名
2
全局变量的定义可以起到全局对象的选择的作用么?vb中怎么利用全局对象实现多重选择启动