2013-08-18 60 views
1

我第一次嘗試創建PHP擴展。我需要一個將返回assoc數組的函數。所以對於測試的原因,我創建了一個小功能:PHP擴展函數array_init拋出'return_value未聲明'

PHP_FUNCTION(testing_array) { 
    char *firstVal = NULL; 
    char *secondVal= NULL; 
    int argc = ZEND_NUM_ARGS(); 
    int firstVal_len; 
    int secondVal_len; 

    if (zend_parse_parameters(argc TSRMLS_CC, "ss", &firstVal, &firstVal_len, &secondVal, &secondVal_len) == FAILURE) 
     return; 

    array_init(return_array); 
} 

但每次我tryimg編譯它,編譯器告訴我:

/root/php/php-src/ext/hello_world/hello_world.c:87: error: return_array undeclared (first use in this function) 
/root/php/php-src/ext/hello_world/hello_world.c:87: error: (Each undeclared identifier is reported only once 
/root/php/php-src/ext/hello_world/hello_world.c:87: error: for each function it appears in.) 

我做錯了嗎?在我看到的每個示例中,都沒有聲明數組變量。

+0

首先,你從來沒有宣佈return_array爲錯誤說,它不應該是array_init(testing_array)? – Kieran

回答

0

錯誤很明顯。您必須在使用之前聲明變量return_array

+0

我知道我需要聲明它,但是在每個教程中,在我看到的每個示例中,它都沒有聲明。你可以在這裏看到它https://github.com/php/php-src/blob/master/ext/filter/filter.c#L889 - 這是一個代碼filter_list()函數從標準的php擴展名「filter 」。 –

1

看看PHP_FUNCTION()宏的定義。它聲明參數return_value而不是return_array。這就是後者沒有被宣佈的原因。