编译 php 扩展 - 编译器警告

问题描述

我尝试编译一个PHP 5 移植到 PHP 7 的 PHP 扩展。我根据以下说明移植它:https://wiki.php.net/phpng-upgrading

我收到两个警告:

警告:指针和整数之间的比较[认启用]

我将代码更改如下:

LONG rc = 0;
zval* ctx_res;
SCARDCONTEXT context;

/* OLD VERSION:
ZEND_FETCH_RESOURCE(context,SCARDCONTEXT,&ctx_res,-1,PHP_PCSC_CTX_RES_NAME,le_pcsc_ctx_res);
*/

/* NEW VERSION: */
if ((context = (SCARDCONTEXT)zend_fetch_resource(Z_RES_P(ctx_res),le_pcsc_ctx_res)) == NULL) { // the warning happens here
    RETURN_FALSE; 
}

但这正是上述说明建议的替代品。如何防止出现此警告?

第二次警告:

警告:传递 'zend_hash_index_del' 的参数 2 会在没有强制转换的情况下从指针生成整数 [认启用]

这里我把代码改成如下:

/* OLD VERSION
zend_hash_index_del(&EG(regular_list),Z_RESVAL_P(ctx_res));
*/

/* NEW VERSION */
zend_hash_index_del(&EG(regular_list),Z_RES_P(ctx_res));

说明建议更改 Z_RESVAL_P 如下:

  • 长句柄 = Z_RESVAL_P(zv);
  • 长句柄 = Z_RES_P(zv)->句柄;

但我不知道手柄应该是什么。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)