"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > क्या आप C++ में फ़ंक्शन पॉइंटर्स में शून्य पॉइंटर्स कास्ट कर सकते हैं?

क्या आप C++ में फ़ंक्शन पॉइंटर्स में शून्य पॉइंटर्स कास्ट कर सकते हैं?

2024-11-08 को प्रकाशित
ब्राउज़ करें:324

Can You Cast void Pointers to Function Pointers in C  ?

सी में शून्य पॉइंटर्स को फ़ंक्शन पॉइंटर्स में कास्ट करना

dlsym() जैसे फ़ंक्शन द्वारा लौटाए गए शून्य पॉइंटर्स को फ़ंक्शन पॉइंटर्स में कनवर्ट करना सी में सीधा नहीं है . डिफ़ॉल्ट रूप से, ऐसी सीधी कास्टिंग C 98/03 में निषिद्ध है। फ़ंक्शन या सदस्य पॉइंटर्स नहीं।

C 0x में सशर्त समर्थन

C 0x में, फ़ंक्शन पॉइंटर्स में शून्य* डालना वैकल्पिक रूप से कार्यान्वयन द्वारा समर्थित है। यदि समर्थित है, तो व्यवहार मानक के अनुरूप होना चाहिए। ]

पुनर्व्याख्या कास्ट:

fptr my_fptr = reinterpret_cast(reinterpret_cast(gptr));

परिवर्तनीय पुनर्व्याख्या:

  • fptr my_ptr = 0; reinterpret_cast(my_ptr) = gptr;
ये वर्कअराउंड इस तथ्य का फायदा उठाते हैं कि फ़ंक्शन पॉइंटर पते ऑब्जेक्ट हैं और reinterpret_cast का उपयोग करके शून्य** पॉइंटर्स में परिवर्तित किया जा सकता है।
fptr my_fptr = reinterpret_cast(reinterpret_cast(gptr));
सावधान नोट
  • इन समाधानों में अपरिभाषित व्यवहार शामिल है और इनका उपयोग विवेक के साथ किया जाना चाहिए।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3