首页 > 代码库 > ETLLib库走读
ETLLib库走读
以前从来也没想过要去看库里的代码,咱想,那怎么也是很底层的代码,居然发现库里的代码也可以这样写,那就先读懂这个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)的用法;
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。