標頭檔案 example.h
#ifndef _example_h_
#define _example_h_
typedef struct example_t;
#ifndef _example_
extern example_t example;
#endif // _example_
#endif // _example_h_
原始檔 example.c
#include
#define _example_
#include "example.h"
static
bool en = true;
static
void sfunctiona(void);
static
int sfunctionb(int a);
static
void sseten(bool en);
static
bool sgeten(void);
example_t example = ;
static
void sfunctiona(void)
static
int sfunctionb(int a)
static
void sseten(bool en)
static
bool sgeten(void)
呼叫檔案 main.c
#include
#include "example.h"
void main(void)
}
以下是說明:
#ifndef _example_h_
#define _example_h_
#endif // _example_h_
標頭檔案必不缺少的巨集定義,是為了防止重複引用。
typedef
struct example_t;
利用結構體定義函式指標,來實現物件導向的方法。如果希望把方法暴露給其他引用,就再這裡需要定義。否則可以不用寫入這裡。
#ifndef _example_
extern example_t example;
#endif // _example_
這個外部變數的引用方法,是通過巨集定義來實現是否為外部變數。在相應的原始檔中利用巨集來關閉這個定義。
#define _example_
#include "example.h"
這個就是在原始檔裡實現關閉外部變數的方法,就是在對應原始檔包含標頭檔案前,對巨集進行定義。而其他檔案引用時不需要巨集定義。
static
bool en = false;
static
void sfunctiona(void);
static
int sfunctionb(int a);
static
void sseten(bool en);
static
bool sgeten(void);
以上是定義變數和宣告函式,希望都加上static
進行修飾,全域性變數需要被其他函式操作,請也封裝方法。如果覺得麻煩,就再結構體定義中定義對應變數的指標,利用指標操作。
example_t example = ;
這個是檔案中唯一的乙個非static
全域性變數,也是最主要的物件導向所呼叫的結構體。在原始檔中宣告並初始化結構體,就是把對應的函式名付給函式指標。
剩下的就是直接呼叫了,使用方法可以參考main.c
C語言用結構體和指標實現物件導向程式設計
結構體和指標,c語言的靈魂。物件導向我就不班門弄斧解釋了。首先,乙個結構體 struct person 那麼 造人 吧 struct person create person const char name,int age,int height,int weight 怎麼 殺人 呢?void des...
簡單解析C語言結構體
1.結構體的定義 結構體是由一系列具有相同型別或不同型別的資料構成的資料集合,叫做結構。在c語言中,結構體指的是一種資料結構。宣告乙個結構體型別的一般形式如下 struct 結構體名 具體宣告如下所示 struct struct 注意最後乙個有分號 注意 結構體型別的名字是又乙個關鍵字struct和...
C語言技巧 實現物件導向
利用static關鍵字的檔案作用域特性,保證私有函式和變數不暴漏給使用者 c 封裝,即隱藏物件的屬性和實現細節,僅對外公開介面 實現原理還是利用static的檔案作用域特性.c class car c static int car data static int car run int kilome...