ETLLib库走读

系统 1839 0

  以前从来也没想过要去看库里的代码,咱想,那怎么也是很底层的代码,居然发现库里的代码也可以这样写,那就先读懂这个 ETLLib (跨 windows Linux 平台,封装了一些基本的系统调用函数,然后实现定制化的实现自己的容器), Qt 的库代码更全面,当然也更复杂。先看看 ETTLib 是如何被实现的,其中的技巧与设计是我需要汲取的,首先,向前辈 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中定义了一些基本关键字,像int,char等分别在Win32与Linux下的不同定义,assic与unicode编码等 
      
    
  

 

    
      
        两个不同平台线程创建函数使用宏定义,向应用层提供统一的调用接口。WIN32:CreateThread函数,附介绍链接 
      
    
    
      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函数 
      
    
  
    
      
            #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)
          
        
        
          
            的用法;
            


ETLLib库走读


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论