Bu sorun o kadar basit ki RTFM'nin geleceğini hissedebiliyorum. Ancak, tüm sabahları (Inline, Inline-C, Inline-C-Cookbook) belgelere bakıyorum ve bu sorunu nasıl çözeceğimi anlayamıyorum.Perl: Tüm inline C kodumu nasıl ayrı bir dosyaya koyabilirim?
Satır içi C'yi kullanmak istiyorum, ancak perl kodumla aynı dosyada C kodu almak istemiyorum.
(Emacs, bir dosyada iki dile sahip değildir. Prensipte bu bir rahatlık meselesidir, fakat pratikte C'yi tek bir dosyada düzenlemek zorundayım, sonra onu perl betiğine kopyalayıp yapıştırın.)
İşteçalışıyor perl: uzak bana bunu almak için mobrule için
#!/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;
}
(teşekkürler)
Ben içine C kodunun tüm (veya mümkün olduğunca) taşımak istiyorum. ayrı başlık dosyası.
Ne bir başlık içine sum1
konur yapmak ve bunu yapabilirsiniz:
# same perl as above except now say sum2 instead of sum1
__END__
__C__
#include "sum.h"
double sum2(AV* array) {
sum1(array);
}
Bu artık perl-modunda C düzenlemek zorunda olduğu yeterince iyidir, ama yoksa herhangi acaba Bu problem için daha zarif bir çözüm mü?
Bu oldukça zarif görünüyor. –
@Pedro Silva, bakanın gözü ve hepsi. sadece bana biraz fazla gibi görünüyor. – flies