WinApi 参数的层次

我以前一直对WinApi参数太多,使用困难颇有微词,但是仔细想想,直接使用Api编程的情况是非常少的。Api难用点,功能强点,好过好用但功能弱。
同时,仔细分析下Api的参数,能发现,它其实是很有设计原则的,我只归纳出以下:
尽量使用单层参数,也是说,参数是简单数据类型,没有内嵌结构;
尽量避免使用多层参数,也就是说,不得不使用结构传递参数的时候,结构里面尽量避免再内嵌其它结构。因此可以看到,一个参数很多的Api中,往往有好几个参数共同表达一个逻辑实体,而在面相对象中,这应该用一个对象来表达。
看看这个Api,很生动的一个例子:
WINSOCK_API_LINKAGE
INT
WSAAPI
GetAddrInfoExW(
    __in_opt    PCWSTR          pName,
    __in_opt    PCWSTR          pServiceName,
    __in        DWORD           dwNameSpace,
    __in_opt    LPGUID          lpNspId,
    __in_opt    const ADDRINFOEXW *hints,
    __deref_out PADDRINFOEXW *  ppResult,
    __in_opt    struct timeval *timeout,
    __in_opt    LPOVERLAPPED    lpOverlapped,
    __in_opt    LPLOOKUPSERVICE_COMPLETION_ROUTINE  lpCompletionRoutine,
    __out_opt   LPHANDLE        lpHandle
    );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值