找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4762|回复: 0
打印 上一主题 下一主题
收起左侧

结构体的声明(extern)与调用的方式

[复制链接]
跳转到指定楼层
楼主
ID:105323 发表于 2016-2-12 19:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这几天写液晶字库索引时发现一个问题,本来想在.h文件中这样定义:

// ------------------  汉字字模的数据结构定义------------------------ //
typedef structtypFNT_GB16                // 汉字字模数据结构
{
      signed charIndex[2];              // 汉字内码索引
      charMsk[32];                      // 点阵码数据
};
/////////////////////////////////////////////////////////////////////////
//汉字字模表                                                         //
// 汉字库: 宋体16.dot纵向取模下高位,数据排列:从左到右从上到下        //
/////////////////////////////////////////////////////////////////////////
struct typFNT_GB16 code GB_16[]=         // 数据表
{
"我", 0x20,0x24,0x24,0x24,0xFE,0x23,0x22,0x20,
     0xFF,0x20,0x22,0xAC,0x20,0x30,0x20,0x00,
     0x00,0x08,0x48,0x84,0x7F,0x02,0x21,0x10,
     0x09,0x06,0x1A,0x61,0x80,0xE0,0x00,0x00,
"们", 0x40,0x20,0xF8,0x07,0x00,0xF8,0x02,0x04,
     0x08,0x04,0x04,0x04,0x04,0xFE,0x04,0x00,
     0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,
     0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00
};

然后在其它c文件中引用提示重复定义,后来看了网上别人的说法,应该这么改:
即新建一个xx.h和xx.c文件
在xx.h文件中内容为:
// ------------------ 汉字字模的数据结构定义 ------------------------//
typedef struct typFNT_GB16 // 汉字字模数据结构
{
signed char Index[2]; // 汉字内码索引
char Msk[32]; // 点阵码数据
};
extern struct typFNT_GB16 code GB_16[];

在xx.c文件中内容为:
#include "xx.h"
/////////////////////////////////////////////////////////////////////////
// 汉字字模表 //
// 汉字库: 宋体16.dot 纵向取模下高位,数据排列:从左到右从上到下 //
/////////////////////////////////////////////////////////////////////////
struct typFNT_GB16 code GB_16[] = // 数据表
{
"我", 0x20,0x24,0x24,0x24,0xFE,0x23,0x22,0x20,
0xFF,0x20,0x22,0xAC,0x20,0x30,0x20,0x00,
0x00,0x08,0x48,0x84,0x7F,0x02,0x21,0x10,
0x09,0x06,0x1A,0x61,0x80,0xE0,0x00,0x00,
"们", 0x40,0x20,0xF8,0x07,0x00,0xF8,0x02,0x04,
0x08,0x04,0x04,0x04,0x04,0xFE,0x04,0x00,
0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,
0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00
};
这样编译通过。实际上结构体是一种数据类型,.h文件定义了一种类型的结构体,并声明为extern形式允许外部调用它,而初始化codeGB_16[] 这个结构体应当在.c文件中进行。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表