Perl API 中是否有用于获取 a 的实际整数字段的宏或函数IV*
?我可以找到大量信息来获取几乎所有其他类型的价值,perlguts
但这perlapi
一点似乎让我难以理解。
问问题
253 次
2 回答
4
从perlguts SvIV(SV*)
应该可以解决问题。
#!/usr/bin/env perl
use strict;
use warnings;
use Inline C => <<'END';
void print_iv (SV* input) {
if (! SvIOK(input))
croak("Not an integer");
printf("Printing integer %d\n", SvIV(input));
}
END
print_iv(3);
于 2013-05-30T03:34:08.417 回答
3
use Inline C => <<'__EOC__';
void print_iv(SV* input) {
SvGETMAGIC(input);
printf("Printing integer %"IVdf"\n", SvIV(input));
}
__EOC__
print_iv(3);
这修复了上一个答案中的三个错误:
- 您需要
SvGETMAGIC
在访问标量之前调用它,以防它很神奇(一个特殊变量)。 SvIOK
不应该检查。如何存储数字无关紧要。%d
并不总是适合IV
. 不使用正确的模式会导致段错误。
于 2013-05-30T05:16:20.637 回答