c++ - Why typedef to a function is required, while casting void* to function pointer? -
मैं एक फ़ंक्शन प्रतीक लोड करने के लिए dlsym () का उपयोग कर रहा था
void (* func) (int); Func = (func *) dlsym (फ़ंडल, "फंक्शन"); यह संकलन त्रुटि का परिणाम था हालांकि, जब मैंने फ़ंक्शन के लिए टाइप किया हुआ
typedef शून्य (* func) (int); फ़ंक्शन फ़ंक्शन = नल; फ़ंक्शन = (फंकक *) dlsym (फ़ंडल, "फंक्शन"); यह ठीक संकलित है, लेकिन मुझे समझ में नहीं आ रहा है कि पहले मामले में यह क्यों असफल रहा था? किसी कारण से कृपया बता सकता है? मैंने पढ़ा है कि सी + + मानक शून्य से सीधा कास्टिंग की अनुमति देता है * कार्य सूचक करने के लिए? यह क्यों और कैसे टाइप किया गया है इस समस्या का हल typedef?
यह पहले मामले में विफल रहता है क्योंकि Func एक चर है, एक प्रकार नहीं है, और किसी कलाकार में उपयोग नहीं किया जा सकता है। ध्यान दें कि * गलत है: टाइपिंगफ़ीड (* फ़ंक्शन) (इंट); / * ^ यहां होना चाहिए। * /
Comments
Post a Comment