c - Unknow type FNTYPE on function pointers -
# शामिल हैं & lt; stdio.h & gt; # से & lt में शामिल हैं, stdlib.h & gt; टाइपफीफ़ शून्य (* fn) (शून्य) FNTYPE; FNTYPE fn_arr [5]; शून्य मजेदार 1 (शून्य) {printf ("\ n मैं मज़े 1 हूँ \ n"); } शून्य मजेदार 2 (शून्य) {printf ("\ n मैं 2 से बढ़ रहा हूँ \ n"); } Fn_arr [0] = & amp; मजेदार 1; Fn_arr [1] = और मज़े 2; इंट तयफंक्शन (चार * inp) {if (inp == NULL) {वापसी 0; } और अगर (* inp == "a") {वापसी 1; } और अगर (* inp == "b") {वापसी 0; } और अगर (* inp == "c") {वापसी 1; } और {वापसी 0; }} Void callMyFunc (char * inp) {printf ("\ n% s \ n", __ func__); Int idx = decisionfunc (inp); fn_arr [IDX] (); } शून्य do_lengthy_op (char * inp, शून्य (* कॉल) (char * inp)) {printf ("\ n do_lengthy_operation! \ N"); फोन (inp); } Int main () {do_lengthy_op ("b", कॉलम्यफंक); वापसी 0; }
मुझे कॉलबैक पर साधारण सी कार्यक्रमों के लिए उपरोक्त त्रुटि मिल रही है I त्रुटि क्यों नहीं पायी जा सकती।
निम्न मुद्दों को ठीक करने के बाद इसे कार्य करना चाहिए।
-
एक
पॉइंटर-टू-फ़ंक्शन
प्रकार को परिभाषित करने के लिए, आपको इसके बजाय निम्नलिखित का उपयोग करना होगा:typedef शून्य (* FNTYPE ) (शून्य);
सही
char
से तुलना करने के लिए, आपकोelse if (* inp = = "ए") {वापसी 1; } और अगर (* inp == "b") {वापसी 0; } और अगर (* inp == "c") {वापसी 1; }
से
else if (* inp == 'a') {वापसी 1; } और अगर (* inp == 'b') {वापसी 0; } और अगर (* inp == 'c') {वापसी 1; }
निम्नलिखित में
मुख्य ()
में न जाएं जैसा कि आप नहीं कर सकते हैं।fn_arr [0] = & amp; मजेदार 1; Fn_arr [1] = और मज़े 2;
इसे लाइव देखें:।
Comments
Post a Comment