要求如下,在.h檔案中這樣定義:
typedef struct typfnt_gb16 // 漢字字模資料結構
;struct typfnt_gb16 code gb_16 = // 資料表
;
同時需要在多個.c檔案中使用該struct, 但是多次include 該.h檔案提示重複定義,應該修改如下:
新建乙個xx.h和xx.c檔案
在xx.h檔案中定義該結構體,同時對結構體變數作extern:
typedef struct typfnt_gb16 // 漢字字模資料結構
;extern struct typfnt_gb16 code gb_16;
在xx.c檔案中include該.h檔案,同時作結構體變數的初始化:
#include "xx.h"
struct typfnt_gb16 code gb_16 = // 資料表
;
在其它.c檔案中需要使用該結構體時,直接include .h檔案即可這樣編譯通過。實際上結構體是一種資料型別,.h檔案定義了一種型別的結構體,並宣告為extern形式允許外部呼叫它,而初始化code gb_16 這個結構體應當在.c檔案中進行。
型別的定義和型別變數的定義不同,型別定義只是描述乙個型別,是給編譯器看的,不會產生可執行**。變數定義是指在執行檔案中真實的存在這麼一塊內容。因此,型別定義可以重複出現也沒關係,型別變數是不能在多個.c中出現,否則就是重複定義。因為每個.c裡都要寫清楚型別定義很麻煩,所以一般都把型別定義寫在.h裡,而在.c裡採用簡單的寫法。
C語言 結構體宣告與sizeof計算結構體大小
1.結構體的宣告 struct 結構體名 成員表列 例如 struct student int main struct student s2 struct student s3 struct student malloc sizeof struct student scanf s d c s2.na...
c tricks POD與結構體宣告
請看下面這個結構體定義 struct mystruct s是 pod struct ss ss不是 podstruct sss ss s不是pod 在c 0x 中,pod 被定義為可以簡單複製的,型別普通的,並且擁有可以應對多種 pod原先就能支援的操作的標準變數位址布局 pod的定義和以前差不多 ...
C 中結構體的宣告
定義 結構是使用者自定義的值型別 樣式 struct pair struct pair struct pair 可以有結尾分號 注意事項 結構是c 程式設計師用來定義自己的值型別的最普遍的機制。結構比列舉更強大,因為它提供函式 字段 建構函式 操作符和訪問控制。結構成員的預設訪問許可權是privat...