首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Perl中从IV*中获取整数

在Perl中从IV*中获取整数
EN

Stack Overflow用户
提问于 2013-05-30 11:02:20
回答 2查看 250关注 0票数 4

Perl API中是否有宏或函数来获取IV*的实际整型字段?我可以找到大量的信息,可以在perlgutsperlapi中获得几乎所有其他类型的价值,但这一点似乎让我摸不着头脑。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-30 11:34:08

来自perlgutsSvIV(SV*)应该可以做到这一点。

代码语言:javascript
复制
#!/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);
票数 4
EN

Stack Overflow用户

发布于 2013-05-30 13:16:21

代码语言:javascript
复制
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。未使用正确的模式可能会导致分段错误。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16827268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档