Ten problem jest tak prosty, że czuję nadchodzące RTFM. Jednak cały ranek przyglądałem się dokumentom (Inline, Inline-C, Inline-C-Cookbook) i nie wiem, jak rozwiązać ten problem.Perl: jak mogę umieścić cały mój wbudowany kod C w osobnym pliku?
Chcę użyć wbudowanego C, ale nie chcę mieć kodu C w tym samym pliku co mój kod Perla.
(Emacs nie lubi mieć dwóch języków w jednym pliku.) Zasadniczo jest to kwestia wygody, ale w praktyce muszę edytować moje C w jednym pliku, a następnie skopiować i wkleić do mojego skryptu Perla.) Perl
Tu pracuje:
#!/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;
}
(dzięki mobrule za wprowadzenie mnie to daleko)
Chcę przenieść cały kod C (lub tyle, ile jest to możliwe) do a. oddzielny plik nagłówkowy.
Co mogę zrobić, to umieścić sum1
w nagłówku, a to zrobić:
# same perl as above except now say sum2 instead of sum1
__END__
__C__
#include "sum.h"
double sum2(AV* array) {
sum1(array);
}
Jest wystarczająco dobry, jak ja nie mają już edycję C w Perl-mode, ale zastanawiam się, czy tam isn czy jest to bardziej eleganckie rozwiązanie tego problemu?
To wygląda całkiem elegancko. –
@Pedro Silva oko patrzącego i tak dalej. wydaje mi się trochę zbędny. – flies