掌叔
2009-02-12 09:48:30
摘自:[url]http://www.iacger.com[/url]
作者:newcreat
上面介绍了如何导出函数和建立prx,那么prx这种设计有什么好处呢,我写一个函数是不是要一个一个的导出,当然这种一个一个导出很费时的,这就要用到C语言的函数指针了。定义一个结构,里面是一组函数指针,然后写一个外部函数GetStruct返回这个结构就行。
例如:一组文件操作:
[code=c]
typedef int (*stream_close_func)( stream* );
typedef long (*stream_read_func)( stream*, void*, unsigned long );
typedef long (*stream_write_func)( stream*, void*, unsigned long );
typedef long (*stream_seek_func)( stream*, long, unsigned int );
typedef long (*stream_tell_func)( stream* );
[/code]
然后定义一个结构:
[code=c]
typedef struct stream_base_struct {
int type; // Stream type ID
int eos; // EOS flag (0 for protocols)
unsigned int size; // Stream size in bytes (0 for protocols)
unsigned int mode; // Stream open mode (possible open modes for protocols)
char name[256]; // Stream name (filename/URL/memory address)
stream_open_func open;
stream_close_func close;
stream_read_func read;
stream_write_func write;
stream_seek_func seek;
stream_tell_func tell;
} stream_base, stream_protocol;
[/code]
最后写一个函数GetStruct返回这个结构的实例,那么就有这组函数了,这就是c的面向对象的思想。
当然可以用c++的类返回类的实例也行。