免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 9749 | 回复: 20
打印 上一主题 下一主题

全局结构体?如何使用? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-10 10:56 |只看该作者 |倒序浏览
我有一个全局结构体数组,想在多个文件当中使用,有什么办法呢?
如下我想在c文件里使用b文件里的结构体值,结果报错:

错误:初始值设定元素不是常量

这样使用不行吗?有什么办法呢?

------------ a.h文件:
typedef struct global_data
{
int i;
char data[200];
}global;

-------------b.c文件:
#include "a.h"

main()
{
global * data = (global *) malloc (100 * sizeof(global));

void init()
{
对data进行一些初始赋值
}

}

-------------c.c文件

#include "a.h"
extern global * data;

论坛徽章:
0
2 [报告]
发表于 2010-08-10 10:58 |只看该作者
在头文件里声明结构体指针不要初始化,在其他c文件里extern 就可以。

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
3 [报告]
发表于 2010-08-10 10:59 |只看该作者
没这样用过。

论坛徽章:
0
4 [报告]
发表于 2010-08-10 11:02 |只看该作者
------------b.c文件:


  1. #include "a.h"
  2. global * data;
  3. main()
  4. {
  5. data = (global *) malloc (100 * sizeof(global));

  6. void init()
  7. {
  8. 对data进行一些初始赋值
  9. }

  10. }

复制代码
全局变量才能extern

论坛徽章:
3
巳蛇
日期:2013-10-03 10:41:48申猴
日期:2014-07-29 16:12:04天蝎座
日期:2014-08-21 09:24:52
5 [报告]
发表于 2010-08-10 11:03 |只看该作者
变量多的话
在一个.c文件下定义,然后在一个.h文件里面声明,别的源程序都include这个.h就行了.

论坛徽章:
0
6 [报告]
发表于 2010-08-10 11:14 |只看该作者
------------b.c文件:全局变量才能extern
zhangsuozhu 发表于 2010-08-10 11:02



    那要是想一个结构体的内容,让多个.c文件都能读到,这样不能做到吗?

论坛徽章:
0
7 [报告]
发表于 2010-08-10 11:16 |只看该作者
回复 6# yyangh


    可以。声明全局变量,别的文件里extern 该全局变量就行了。

论坛徽章:
0
8 [报告]
发表于 2010-08-10 11:17 |只看该作者
那要是想一个结构体的内容,让多个.c文件都能读到,这样不能做到吗?
yyangh 发表于 2010-08-10 11:14



    把那个放到main外面不就完了

论坛徽章:
0
9 [报告]
发表于 2010-08-10 11:19 |只看该作者
变量多的话
在一个.c文件下定义,然后在一个.h文件里面声明,别的源程序都include这个.h就行了.
pandaiam 发表于 2010-08-10 11:03




    问题我是想让这个变量里的值让别的.c文件可以读到,这个变量在main.c文件里初始化赋了值,想让它在所有.c文件里都可以读到,仅仅包函一个.h文件可以做到吗?

论坛徽章:
0
10 [报告]
发表于 2010-08-10 11:21 |只看该作者
问题我是想让这个变量里的值让别的.c文件可以读到,这个变量在main.c文件里初始化赋了值,想让 ...
yyangh 发表于 2010-08-10 11:19



    包含这个头文件,相当于你在每个用到的C文件里声明一遍"extern ..."那些东西.一个道理.

想彻底搞明白这些东西,要学一些链接器的相关知识.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP