XS::APItest - 测试 perl C API
use XS::APItest;
print_double(4);
use XS::APItest qw(rpn calcrpn);
$triangle = rpn($n $n 1 + * 2 /);
calcrpn $triangle { $n $n 1 + * 2 / }
此模块测试 perl C API。还公开 perl 内部内容供核心测试脚本使用。
此模块可用于检查 perl C API 是否正常运行。此模块提供测试函数和关联的测试脚本,用于验证输出。
此模块不应安装。
导出所有测试函数
测试 printf
是否正确设置双精度浮点数的格式。
print_double( $val );
输出发送至 STDOUT。
测试 printf
是否正确设置 long double
。不接受参数 - 测试值已固化到函数中(为“7”)。
print_long_double();
输出发送至 STDOUT。
确定 Perl 是否支持 long double
。这应用于确定是否测试 print_long_double
。
print_long_double() if have_long_double;
测试 printf
是否正确格式化了 NV
。
print_nv( $val );
输出发送至 STDOUT。
测试 printf
是否正确格式化了 IV
。
print_iv( $val );
输出发送至 STDOUT。
测试 printf
是否正确格式化了 UV
。
print_uv( $val );
输出发送至 STDOUT。
测试 printf
是否正确格式化了 int
。
print_int( $val );
输出发送至 STDOUT。
测试 printf
是否正确格式化了 long
。
print_long( $val );
输出发送至 STDOUT。
测试 printf
是否正确格式化了单精度浮点数。
print_float( $val );
输出发送至 STDOUT。
安装一个源过滤器,将“o”替换为“e”(不考虑它可能会修改什么)。
这些练习同名 C 调用。flags 参数之后的所有内容都作为参数传递给被调用函数。它们返回 C 函数本身压入堆栈的任何内容,加上函数的返回值;例如
call_sv( sub { @_, 'c' }, G_LIST, 'a', 'b');
# returns 'a', 'b', 'c', 3
call_sv( sub { @_ }, G_SCALAR, 'a', 'b');
# returns 'b', 1
计算传递的 SV。结果处理与 call_sv()
等相同。
在标量上下文中练习同名 C 函数。返回 C 函数返回的相同 SV。
练习同名 C 函数。不返回任何内容。
这些默认情况下不提供,但必须显式导入。它们是词法作用域的。
表现得像 $_
。
此构造是一个 Perl 表达式。表达式必须是 RPN 算术表达式,如下所述。RPN 表达式将被求值,其值将作为 Perl 表达式的值返回。
此构造是一个完整的 Perl 语句。(闭合大括号后不应再跟分号。)变量必须是 Perl 标量 my
变量,表达式必须是 RPN 算术表达式,如下所述。RPN 表达式将被求值,其值将被赋给变量。
RPN 表达式的标记可以用空格分隔,但通常不需要这种分隔。仅在未分隔的标记看起来像一个更长的标记时才需要分隔。例如,12 34 +
可以写成 12 34+
,但不能写成 1234 +
。
RPN 表达式可以是以下任何一种
1234
数字序列是一个无符号十进制字面数字。
$foo
美元符号前跟字母数字名称表示一个 Perl 标量变量。仅支持用 my
或 state
声明的变量。如果变量的值不是本机整数,它将在求值时通过 Perl 的常用机制转换为整数。
+
A 和 B 的和。
-
A 和 B 的差,即从 A 中减去 B 的结果。
*
A 和 B 的乘积。
/
当 A 除以 B 时,商四舍五入为零。除以零会生成异常。
%
当 A 除以 B 时,商四舍五入为零的余数。除以零会生成异常。
由于算术运算符都具有固定的元数并且是后缀的,因此不需要运算符优先级,也不需要分组运算符来覆盖优先级。这是 RPN 的一半要点。
RPN 表达式也可以用另一种方式解释,即作为对栈的一系列操作,每个标记一个操作。字面值或变量标记将值推送到栈中。二元运算符从栈中提取两个项目,对它们执行计算,并将结果推回到栈中。栈最初为空,在表达式的末尾,栈中必须只剩下一个值。
Tim Jenness,<[email protected]>,Christian Soeller,<[email protected]>,Hugo van der Sanden <[email protected]>,Andrew Main (Zefram) <[email protected]>
版权所有 (C) 2002,2004 Tim Jenness、Christian Soeller、Hugo van der Sanden。保留所有权利。
版权所有 (C) 2009 Andrew Main (Zefram) <[email protected]>
此库是免费软件;你可以根据与 Perl 本身相同的条款重新分发和/或修改它。