Perl API中是否有宏或函数来获取IV*的实际整型字段?我可以找到大量的信息,可以在perlguts和perlapi中获得几乎所有其他类型的价值,但这一点似乎让我摸不着头脑。
发布于 2013-05-30 11:34:08
来自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-30 13:16:21
use Inline C => <<'__EOC__';
void print_iv(SV* input) {
SvGETMAGIC(input);
printf("Printing integer %"IVdf"\n", SvIV(input));
}
__EOC__
print_iv(3);这修复了前一个答案中的三个错误:
SvGETMAGIC,以防它是神奇的(不应该检查特殊的标量。数字的存储方式是没有consequence.%d的,并不总是适用于IV。未使用正确的模式可能会导致分段错误。https://stackoverflow.com/questions/16827268
复制相似问题