qt的訊號與槽
一下是用c實現的簡易的訊號與槽。指標用的比較多。
廢話不多說,上**
#ifndef _******_signal_solts_h_
#define _******_signal_solts_h_
#include "string.h"
typedef void (*******_signal)(void *signal, void *parg);
typedef void (*******_solts) (void *parg);
#define ******_solts_t(funcname) void(funcname)(void *parg)
#define ******_emit(signal, arg) if (signal != null)signal(&signal, arg)
#define ******_signal_solts_max_solts 10 //乙個訊號最多連線槽的數量
#define ******_signal_solts_max_signal 10 //訊號最多數量
errorstatus ******signalsolts_connect(******_signal *signal,******_solts solts);
#endif
/*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
**** @ file name --> ******signalsolts.c
* @ author --> by@ liuyu
* @ version --> v1.0
* @ date --> 2017 - 06 - 15
* @ brief --> 輕量級的訊號與槽
* @ --> 乙個訊號對應多個槽,查表呼叫
******
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
****
** file update
* @ version --> v1.0
* @ author -->
* @ date -->
* @ revise -->
* @ --> **
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
***/
#include "******signalsolts.h"
#include
//訊號結構
typedef struct
******_signal_t;
//訊號表結構
typedef struct
******_signal_solts_handle_t;
******_signal_solts_handle_t handle =
;static void ******signalsolts_signal(void *signal, void *parg)}}
}}/*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
******
* @函式說明: 連線訊號與槽
* @輸入引數: ******_signal *singnal 訊號的指標(指標的指標)
******_solts solts 槽
* @輸出引數: 無
* @返回引數: errorstatus
* @修改記錄: ----
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
******/
errorstatus ******signalsolts_connect(******_signal *signal, ******_solts solts)
uint8_t i;
if (handle.signalcount > ******_signal_solts_max_signal) //錯誤
for (i = 0; i < handle.signalcount; i++) //查詢是否是同乙個訊號
if (handle.signaltable[i].soltscount == ******_signal_solts_max_solts) //滿了
else}}
if (handle.signalcount == ******_signal_solts_max_signal) //滿了
else
}/*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
******
* @函式說明: 斷開訊號槽
* @輸入引數: ******_signal *singnal 訊號的指標(指標的指標)
******_solts solts 槽
* @輸出引數: 無
* @返回引數: errorstatus
* @修改記錄: ----
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
******/
errorstatus ******signalsolts_disconnect(******_signal *signal, ******_solts solts)
uint8_t i, j;
for (i = 0; i < handle.signalcount; i++) //查詢是否是同乙個訊號
}if (handle.signaltable[i].soltscount == 0) //此訊號沒有連線槽了
return success;}}
return error;
}
uClibc(輕量級C庫)
參考 http www.uclibc.org gnu的glibc是乙個非常寵大而完整的庫,至少對於嵌入式系統來說,其體積顯得過於大了一些。uclibc的提出較好的解決了這樣乙個問題。uclibc盡可能的相容glibc,大多數應用程式可以在很小或完全不修改的情況下就可能使用uclibc替代glibc。...
C 資訊槽 訊號槽
訊號槽作用 1 可以將事件源和訂閱處理者分開 2 降低耦合性,事件源只需要向外界暴露最少的資訊,內部改變不影響外部行為 3.降低 複雜性,將事件不同的處理 分散到各個訂閱者內部。使用資訊槽 1 包含標頭檔案,include sigslot.h using namespace sigslot 2 在事...
(原創) C 輕量級AOP框架
c 中開源的aop框架aspectc 需要單獨編譯才能將切面的 織入到核心邏輯 中,感覺使用起來不方便,不能滿足快速開發要求。我希望只要實現方法攔截即可,能織入before 和after 操作就行,不追求動態織入。思路是這樣的,通過乙個包裝類,裡面定義before 和after 方法,和 運算子過載...