这个问题很简单,我可以感受到RTFM的到来.但是,我整个上午都在看文档(Inline,Inline-C,Inline-C-Cookbook),我无法弄清楚如何解决这个问题.
我想使用内联C,但我不想在与perl代码相同的文件中使用C代码.
(Emacs不喜欢在一个文件中使用两种语言.原则上这是方便的,但实际上我必须在一个文件中编辑我的C然后将其复制粘贴到我的perl脚本中.)
这是工作perl:
#!/usr/bin/perl
use Inline C => DATA;
use strict;
use warnings;
use List::Util qw(sum);
use feature qw(say);
my @array = (1..10);
say "native perl: ", sum(@array), ", Inline C: ", sum1(\@array);
__END__
__C__
double sum1(AV* array) {
int i;
double sum = 0.0;
for (i=0; i<=av_len(array); i++) {
SV** elem = av_fetch(array, i, 0);
if (elem != NULL)
sum += SvNV(*elem);
}
return sum;
}
Run Code Online (Sandbox Code Playgroud)
(感谢mobrule让我这么远.)
我想将所有C代码(或尽可能多的)移动到单独的头文件中.
我可以做的是放入sum1 …