读书人

怎么在多文件中共用一个常量数组

发布时间: 2012-03-22 17:43:57 作者: rapoo

如何在多文件中共用一个常量数组?
现在有一常量数组:
const unsigned char Text5[5]={ 'A ', 'B ', 'C ', 'D '}
此数组需要在多个func1.c,func2.c,func3.c....中引用,
请问大家需要如何定义这个数组?
我现在是把这个数组定义在一个constvalue.h中:
#ifndef _CONSTVALUE_h

#define _CONSTVALUE_h

const unsigned char Text5[5]={ 'A ', 'B ', 'C ', 'D '};

#endif
然后通过在func1.c,func2.c,func3.c....中引用include "constvalue.h " 并使用,
但是编译提示:
multiple definition of "Text5 "
编译环境:Dev-C++,winxp pro
大家有其他办法吗?

[解决办法]
用extern.
[解决办法]
在其他C文件前面写上
extern Text5;
好像就可以了,试下。
[解决办法]
在.c文件中定义const unsigned char Text5[5]={ 'A ', 'B ', 'C ', 'D '};
在.h文件中声明extern const unsigned char Text5[5];
[解决办法]
在头文件中用
extern const unsigned char Text5[5];

然后在1个C文件中用
const unsigned char Text5[5]={ 'A ', 'B ', 'C ', 'D '};
这样编译这个C文件生成的obj文件中会包含一个Text5[]

其它include了这个头文件的C文件在编译时,extern会告诉编译器这是一个外部符号,生成的obj中就只有对Text5[]的引用

然后当link时,联接器发现这是一个外部符号,就会到其它obj文件中寻找Text5[],然后把它的地址写入引用它的地方,从而完成联接

读书人网 >C语言

热点推荐