- 论坛徽章:
- 24
|
原帖由 MrLegend 于 2009-9-1 18:26 发表 ![]()
谁告诉你不能直接访问?别在这里妖言惑众,我看本论坛最近弱智贴很多,原来是某个培训机构的那些学生们都来了,靠!
不告诉你结构体里成员的名字,访问?你要先找到他们。
参见: http://blog.csdn.net/peteryxk/archive/2009/01/02/3685890.aspx
1. 基于句柄(opaque data structure)的操作
struct __log4c_appender; // opaque data structure
typedef struct __log4c_appender log4c_appender_t; // 以后,所有客户的访问要以此类型作为句柄,通过提供的接口进行操作。(针对这种opaque data structure,只能定义这些类型的指针,不能定义值,因为定义值需要知道结构体的确切大小和field的layout状况)
可进行的操作如下:
// appender的创建和销毁接口
LOG4C_API log4c_appender_t* log4c_appender_get(
const char* a_name);
LOG4C_API log4c_appender_t* log4c_appender_new(
const char* a_name);
LOG4C_API void log4c_appender_delete(
log4c_appender_t* a_appender);
// appender的各种accessor
LOG4C_API const char* log4c_appender_get_name(
const log4c_appender_t* a_appender);
LOG4C_API const log4c_appender_type_t* log4c_appender_get_type(
const log4c_appender_t* a_appender);
LOG4C_API const log4c_layout_t* log4c_appender_get_layout(
const log4c_appender_t* a_appender);
LOG4C_API void* log4c_appender_get_udata(
const log4c_appender_t* a_appender);
LOG4C_API const log4c_appender_type_t* log4c_appender_set_type(
log4c_appender_t* a_appender,
const log4c_appender_type_t* a_type);
LOG4C_API void* log4c_appender_set_udata(
log4c_appender_t* a_appender, void* a_udata);
LOG4C_API const log4c_layout_t* log4c_appender_set_layout(
log4c_appender_t* a_appender,
const log4c_layout_t* a_layout); |
|