php扩展接收参数问题

  double tmp_user_uin;
uint32_t area_id;
uint32_t type;
uint32_t begin_sec;
uint32_t begin_usec;
uint32_t num;
uint32_t game_id;
if ( zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "dlsllddddddd",&dopuin,&appid,&IP,&iplength,&PORT,&waitms,&tmp_user_uin,&area_id,&type,&begin_sec,&begin_usec,&num,&game_id ) == FAILURE )

sprintf(sErrMsg,"输入参数与接受参数不匹配");
add_assoc_string(return_value,"error",sErrMsg,1);
add_assoc_long(return_value,"errno",input_para_errno);
return;
}
uint64_t user_uin = (uint64_t) tmp_user_uin;
area_id = (uint32_t) area_id;
type = (uint32_t) type;
begin_sec = (uint32_t) begin_sec;
begin_usec = (uint32_t) begin_usec;
num = (uint32_t) num;
game_id = (uint32_t) game_id; 



这段代码,你会发现 user_uin 会失真。拿到的uin和输入到php扩展里面的uin是不一样的。
改成下面的就ok了:

double tmp_user_uin;
uint32_t area_id;
uint32_t type;
uint32_t begin_sec;
uint32_t begin_usec;
uint32_t num;
uint32_t game_id;
if ( zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "dlslldllllll",&dopuin,&appid,&IP,&iplength,&PORT,&waitms,&tmp_user_uin,&area_id,&type,&begin_sec,&begin_usec,&num,&game_id ) == FAILURE )

sprintf(sErrMsg,"输入参数与接受参数不匹配");
add_assoc_string(return_value,"error",sErrMsg,1);
add_assoc_long(return_value,"errno",input_para_errno);
return;
}
uint64_t user_uin = (uint64_t) tmp_user_uin;
area_id = (uint32_t) area_id;
type = (uint32_t) type;
begin_sec = (uint32_t) begin_sec;
begin_usec = (uint32_t) begin_usec;
num = (uint32_t) num;
game_id = (uint32_t) game_id; 



说明:
php扩展在接受参数的时候是有参数间的影响的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值