यह समस्या इतनी सरल है कि मैं आरटीएफएम के आने का अनुभव कर सकता हूं। हालांकि, मैं दस्तावेज़ों को देख रहा हूं (Inline, Inline-C, Inline-C-Cookbook) सभी सुबह और मैं इस समस्या को हल करने का तरीका नहीं समझ सकता।पर्ल: मैं अपने सभी इनलाइन सी कोड को एक अलग फ़ाइल में कैसे रख सकता हूं?
मैं इनलाइन सी का उपयोग करना चाहता हूं, लेकिन मैं अपने कोड कोड के समान फ़ाइल में सी कोड नहीं चाहता हूं।
(Emacs को एक फ़ाइल में दो भाषाओं को पसंद नहीं है। सिद्धांत रूप में यह सुविधा का मामला है, लेकिन व्यावहारिक रूप से मुझे एक फ़ाइल में अपना सी संपादित करना है, फिर इसे मेरी पर्ल स्क्रिप्ट में कॉपी करें।)
यहाँ काम कर रहा है पर्ल:
#!/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;
}
(मुझे इस दूर प्राप्त करने के लिए mobrule करने के लिए धन्यवाद)
मैं एक में या के रूप में ज्यादा संभव के रूप में) सी कोड के सभी (ले जाना चाहते हैं। अलग हेडर फ़ाइल।
मैं क्या एक हैडर में sum1
डाल दिया है सकते हैं, और ऐसा करते हैं:
# same perl as above except now say sum2 instead of sum1
__END__
__C__
#include "sum.h"
double sum2(AV* array) {
sum1(array);
}
यह काफी अच्छा मैं अब पर्ल मोड में सी संपादित करने के लिए है के रूप में है, लेकिन मुझे आश्चर्य है कि अगर वहाँ isn इस समस्या के लिए एक और अधिक सुरुचिपूर्ण समाधान नहीं है?
यह सुंदर सुरुचिपूर्ण दिखता है। –
@ पेड्रो सिल्वा दर्शक की आंख और सब कुछ। बस मेरे लिए थोड़ा अनावश्यक लगता है। – flies