dlsym() के माध्यम से एक शून्य पॉइंटर प्राप्त करना, लक्ष्य है उस सूचक द्वारा संदर्भित फ़ंक्शन को प्रारंभ करें। C-स्टाइल कास्ट के विपरीत, static_cast या reinterpret_cast का उपयोग करके कास्टिंग के माध्यम से रूपांतरण का प्रयास विफल हो गया है। हालाँकि, C 0x सशर्त समर्थन प्रदान करता है, जो कार्यान्वयन को व्यवहार को निर्देशित करने की अनुमति देता है। अधिकांश प्लेटफ़ॉर्म:
void *gptr = dlsym(कुछ प्रतीक..); टाइपडिफ़ शून्य (*fptr)(); fptr my_fptr = reinterpret_castfptr my_ptr = 0;
reinterpret_cast
void *gptr = dlsym(some symbol..);
typedef void (*fptr)();
fptr my_fptr = reinterpret_cast(reinterpret_cast(gptr));
यह विधि इस तथ्य का फायदा उठाती है कि फ़ंक्शन पॉइंटर का पता एक ऑब्जेक्ट पॉइंटर है: fptr my_ptr = 0;
reinterpret_cast(my_ptr) = gptr;
यह दृष्टिकोण मानक में अपरिभाषित है लेकिन अधिकांश कार्यान्वयन पर यथोचित रूप से अच्छा काम करना चाहिए।अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3