函数返回值
php的api里定义了很多宏来实现扩展里函数的返回值。RETURN_BOOL、RETURN_LONG、RETURN_DOUBLE这3个宏分别用于返回对应的值。只在参数里填入需要返回的值即可。如RETURN_LONG(1024);。对于string,则有RETURN_STRING和RETURN_STRINGL。其中后者可以指定字符串的长度,前者只是以作为结束标志。第二个参数表示是否复制字符串的值。如果char数组是在栈空间内分配的(如作为局部变量的字符串常量)就需要指定为1。
实际上,php的扩展中,函数的返回值是通过一个return_value的变量来传递的。如果煮一下PHP_FUNCTION所展开的内容的话,会发现return_value实际上是这个函数的一个参数。前面那几个宏所作的事情就是,对return_value赋值然后return。对return_value赋值则还有一组RETVAL_开头的宏。如RETVAL_BOOL等。