簡單的C語言結構體實現物件導向的方法

2021-08-08 19:27:14 字數 1917 閱讀 3696

標頭檔案 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...