以前從來也沒想過要去看庫里的代碼,咱想,那怎么也是很底層的代碼,居然發(fā)現(xiàn)庫里的代碼也可以這樣寫,那就先讀懂這個 ETLLib (跨 windows 與 Linux 平臺,封裝了一些基本的系統(tǒng)調(diào)用函數(shù),然后實現(xiàn)定制化的實現(xiàn)自己的容器), Qt 的庫代碼更全面,當然也更復雜。先看看 ETTLib 是如何被實現(xiàn)的,其中的技巧與設計是我需要汲取的,首先,向前輩 SYZ 致敬!
#ifndef __cplusplus
#error use <ETLLib.h> NOT <ETLLib.hpp> for c program
#endif
?
注意: #error 這個預定義的報警作用;編譯的時候做限制,編譯器支持 C++ 則包含 ETLLib.hpp ,否則包括 ETLLib.h<br><br> 跨平臺預定義支持
#ifdef _WIN32
#define WINDOWS_SYSTEM 1
#define LINUX_SYSTEM 0
#else
#define WINDOWS_SYSTEM 0
#define LINUX_SYSTEM 1
#endif
?
ETLLib.h中定義了一些基本關(guān)鍵字,像int,char等分別在Win32與Linux下的不同定義,assic與unicode編碼等
?
兩個不同平臺線程創(chuàng)建函數(shù)使用宏定義,向應用層提供統(tǒng)一的調(diào)用接口。WIN32:CreateThread函數(shù),附介紹鏈接
http://blog.csdn.net/cbnotes/article/details/8277180
?
#define
DECLARE_THREAD_METHOD(method) extern DWORD __stdcall method(void* lpData)
#define
IMPLEMENT_THREAD_METHOD(method) DWORD __stdcall method(void* lpData)
#define
CREATE_THREAD(thread_method) do{THREAD_ID id = 0; CreateThread(NULL, 0, thread_method, NULL, 0, &id);}while(0)
#define
link_lib(prex) comment(lib, prex _USUF _DSUF ".lib")
#pragma
link_lib("LTLLib")
?
Linux:pthread_create函數(shù)
????#define
DECLARE_THREAD_METHOD(method) extern void* method(void* lpData)
????#define
IMPLEMENT_THREAD_METHOD(method) void* method(void* lpData)
????#define
CREATE_THREAD(thread_method) do{THREAD_ID id = 0; pthread_create(&id, NULL, thread_method, NULL);}while(0)
?
注意
do while(0)
的用法;
更多文章、技術(shù)交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
