找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4715|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

結(jié)構(gòu)體的聲明(extern)與調(diào)用的方式

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:105323 發(fā)表于 2016-2-12 19:18 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
這幾天寫液晶字庫索引時發(fā)現(xiàn)一個問題,本來想在.h文件中這樣定義:

// ------------------  漢字字模的數(shù)據(jù)結(jié)構(gòu)定義------------------------ //
typedef structtypFNT_GB16                // 漢字字模數(shù)據(jù)結(jié)構(gòu)
{
      signed charIndex[2];              // 漢字內(nèi)碼索引
      charMsk[32];                      // 點(diǎn)陣碼數(shù)據(jù)
};
/////////////////////////////////////////////////////////////////////////
//漢字字模表                                                         //
// 漢字庫: 宋體16.dot縱向取模下高位,數(shù)據(jù)排列:從左到右從上到下        //
/////////////////////////////////////////////////////////////////////////
struct typFNT_GB16 code GB_16[]=         // 數(shù)據(jù)表
{
"我", 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(diǎn)文件中引用提示重復(fù)定義,后來看了網(wǎng)上別人的說法,應(yīng)該這么改:
即新建一個xx.h和xx.c文件
在xx.h文件中內(nèi)容為:
// ------------------ 漢字字模的數(shù)據(jù)結(jié)構(gòu)定義 ------------------------//
typedef struct typFNT_GB16 // 漢字字模數(shù)據(jù)結(jié)構(gòu)
{
signed char Index[2]; // 漢字內(nèi)碼索引
char Msk[32]; // 點(diǎn)陣碼數(shù)據(jù)
};
extern struct typFNT_GB16 code GB_16[];

在xx.c文件中內(nèi)容為:
#include "xx.h"
/////////////////////////////////////////////////////////////////////////
// 漢字字模表 //
// 漢字庫: 宋體16.dot 縱向取模下高位,數(shù)據(jù)排列:從左到右從上到下 //
/////////////////////////////////////////////////////////////////////////
struct typFNT_GB16 code GB_16[] = // 數(shù)據(jù)表
{
"我", 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
};
這樣編譯通過。實(shí)際上結(jié)構(gòu)體是一種數(shù)據(jù)類型,.h文件定義了一種類型的結(jié)構(gòu)體,并聲明為extern形式允許外部調(diào)用它,而初始化codeGB_16[] 這個結(jié)構(gòu)體應(yīng)當(dāng)在.c文件中進(jìn)行。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表