-1

私は小さなphp拡張機能を書いていますが、それを構築するときに問題があります。コード:

PHP_RINIT_FUNCTION(pstat)
{
    int argc = ZEND_NUM_ARGS();
    return SUCCESS;
}

makeでエラーが発生しました:

.... /ext/pstat/pstat.c:122:31: error: 'ht' undeclared (first use in this function)

ZEND_NUM_ARGS()は、Zend_API.hのマクロです。

#define ZEND_NUM_ARGS()     (ht)

しかし、「ht」とは何ですか?何か案は?

4

1 に答える 1

7

なぜZEND_NUM_ARGS()ここを使っているのですか?これはリクエストの初期化関数であり、ユーザーが提供する引数は受け取りません。


通常、常にでhtはありませんが、ハッシュ テーブルを示すために使用されます。

ZEND_NUM_ARGS()通常、PHP_FUNCTIONマクロで定義された関数内で使用され、PHP スクリプトから内部関数に渡される引数の数を取得します。


マクロからトレースバックするPHP_FUNCTIONと、内部関数定義で使用される次の標準的な引数のセットが表示されます。

#define INTERNAL_FUNCTION_PARAMETERS int ht, zval *return_value, zval **return_value_ptr, zval *this_ptr, int return_value_used TSRMLS_DC

ご覧のとおり、この定義にはhtint として含まれています。

の引数にPHP_RINIT_FUNCTIONは は含まれませんht

#define INIT_FUNC_ARGS      int type, int module_number TSRMLS_DC
于 2012-08-17T12:35:39.827 に答える