結構體變量的 extern 使用方法,轉--


要求如下,在.h文件中這樣定義:

typedef struct typFNT_GB16       // 漢字字模數據結構
{
    signed char Index[2];        // 漢字內碼索引
    char Msk[32];                // 點陣碼數據
};
 
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文件中使用該struct, 但是多次include 該.h文件提示重復定義,應該修改如下:


新建一個xx.h和xx.c文件

在xx.h文件中定義該結構體,同時對結構體變量作extern:

typedef struct typFNT_GB16          // 漢字字模數據結構
{
    signed char Index[2];           // 漢字內碼索引
    char Msk[32];                   // 點陣碼數據
};
 
extern struct typFNT_GB16 code GB_16[];

 

在xx.c文件中include該.h文件,同時作結構體變量的初始化:

#include "xx.h"

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文件中需要使用該結構體時,直接include .h文件即可這樣編譯通過。實際上結構體是一種數據類型,.h文件定義了一種類型的結構體,並聲明為extern形式允許外部調用它,而初始化code GB_16[] 這個結構體應當在.c文件中進行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM