के साथ फ़ंक्शन पॉइंटर सी में ऐसा कुछ संभव है?सी, तर्क पूर्व निर्धारित
#include <stdio.h>
void print_str(char *str) {
printf(str);
}
int main() {
void (*f_ptr)() = print_str,"hello world";
f_ptr();
}
//see "hello world" on stdout
संक्षेप में, मैं एक फ़ंक्शन पॉइंटर रखना चाहता हूं जो तर्कों को "स्टोर" करता है। मुद्दा यह है कि फ़ंक्शन पॉइंटर को बाद में मूल डेटा के संदर्भ की आवश्यकता के बिना उपयोग किया जा सकता है।
मैं एक समारोह सूचक और एक तर्क संदर्भ
struct f_ptr {
void (*f)();
void *data;
}
void exec_f_ptr(f_ptr *data) {
data->f(data->data):
}
जोड़ी को कुछ इस तरह इस्तेमाल कर सकते हैं लेकिन सिर्फ तर्क के अंदर के साथ एक समारोह सूचक बुला के रूप में के रूप में सुंदर नहीं होगा।
आप गलत भाषा का उपयोग कर रहे हैं। दूसरा समाधान आमतौर पर सी में उपयोग किया जाता है। हम अलग-अलग हस्ताक्षरों के साथ फ़ंक्शन पॉइंटर्स नहीं ले सकते हैं और उन्हें एक ही कोड के माध्यम से कॉल करने का प्रयास कर सकते हैं। सी ++ में अधिक सुविधाएं हैं और इसके लिए बेहतर अनुकूल है, लेकिन गतिशील टाइपिंग और प्रथम श्रेणी की वस्तुओं के रूप में कार्य करने वाली भाषाएं आमतौर पर इस तरह के कोड के लिए उपयुक्त होती हैं। – stinky472
आप एक मैक्रो '#define DO_FUN (डी) (डी) -> एफ ((डी) -> डेटा) परिभाषित कर सकते हैं, फिर तर्क के साथ एक पॉइंटर को कॉल करने के लिए, आप अपनी एक पंक्ति को 'DO_FUN (डेटा) में बदल देते हैं; ' – maxwellb
ओह, आप निष्पादन समारोह के साथ क्या कर रहे हैं, अब मैं देख रहा हूं? उस स्थिति में, हर कोई सही है, यह आपके पास सबसे अच्छा है। – maxwellb