में अप्रत्यक्ष है यदि कोई फ़ंक्शन कॉल प्रत्यक्ष है, तो आप निम्न कोड के माध्यम से फ़ंक्शन प्रकार प्राप्त कर सकते हैं।कॉलइन्स्ट से फ़ंक्शनटाइप कैसे प्राप्त करें जब कॉल एलएलवीएम
Function * fun = callInst->getCalledFunction();
Function * funType = fun->getFunctionType();
हालांकि, अगर कॉल अप्रत्यक्ष है, वह है, एक समारोह सूचक के माध्यम से, getCalledFunction
रिटर्न नल। तो मेरा सवाल यह है कि फ़ंक्शन पॉइंटर के माध्यम से फ़ंक्शन को कॉल करते समय फ़ंक्शन प्रकार कैसे प्राप्त करें।
इस तरह के एक अच्छे उत्तर के लिए धन्यवाद। मुझे लगता है, टाइप * फंक्शन पॉइंटर को शून्य * पॉइंटर कास्टिंग करने के लिए पर्याप्त होगा, क्योंकि मुझे लगता है कि उस उद्देश्य के लिए बिटकास्टइन्स्ट का उपयोग करने की आवश्यकता है, और वह कक्षा टाइप * को इसके पैरामीटर के रूप में लेती है। – MetallicPriest
@ मेटालिक प्रीस्ट हां, 'टी' को कास्टिंग करना आपको मनमाने ढंग से पॉइंटर के साथ करने की ज़रूरत है ताकि इसे आपके 'कॉलइस्ट' के अनुरूप बनाया जा सके। मुझे लगता है कि आपका मतलब 'i8 *' है, हालांकि, 'void *' नहीं है, जो कानूनी एलएलवीएम प्रकार नहीं है। – Oak
मैं अप्रत्यक्ष कॉल के फ़ंक्शन का नाम प्राप्त करने का प्रयास कर रहा हूं: 'वैल्यू * वी = सीआई-> getCalledValue(); मान * sv = v-> स्ट्रिप पॉइंटरकास्ट(); StringRef fname = sv-> getName(); ' लेकिन वास्तव में काम नहीं करता है। कोई विचार? – eternalStudent