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扩展在接受参数的时候是有参数间的影响的。
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扩展在接受参数的时候是有参数间的影响的。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: jquery判断字符串中是否包含特定字符的方法总结
- 下一篇: js的二维数组