सी में कंपाइलर-जनरेटेड टेम्पलेट इंस्टेंटिएशन का निरीक्षण करना
सी में, टेम्पलेट फ़ंक्शंस और कक्षाएं सामान्य कार्यक्षमता को परिभाषित करके कोड के पुन: उपयोग की अनुमति देती हैं जो कि हो सकती हैं विभिन्न प्रकारों के लिए विशिष्ट। टेम्पलेट इंस्टेंटिएशन के लिए कंपाइलर द्वारा उत्पन्न कोड को समझने के लिए, इन इंस्टेंटियेटेड फ़ंक्शंस या कक्षाओं में दृश्यता रखना सहायक होता है।
क्लैंग की एएसटी प्रिंटिंग क्षमता
एक उपकरण यह दृश्यता प्रदान करने वाला क्लैंग का एब्सट्रैक्ट सिंटेक्स ट्री (एएसटी) प्रिंटिंग फीचर है, जो सी के लिए व्यापक रूप से उपयोग किया जाने वाला कंपाइलर है। एएसटी संकलन से पहले कोड के आंतरिक प्रतिनिधित्व का प्रतिनिधित्व करता है, जिसमें टेम्प्लेट इंस्टेंशियेशन के लिए जेनरेट किया गया कोड भी शामिल है। वास्तविक संकलन को रोकने के लिए -fsyntax-only ध्वज।
उदाहरण के लिए, निम्नलिखित कोड पर विचार करें:
templatetemplate T add(T a, T b) {
return a b;
}
void tmp() {
add(10, 2); // Call the template with int specialization
}
$ clang -Xclang -ast-print -fsyntax-only test.cpp
$ clang -Xclang -ast-print -fsyntax-only test.cppउदाहरण आउटपुट
आउटपुट में एएसटी शामिल होगा, जिसमें तत्काल ऐड
टेम्पलेट टी ऐड(टी ए, टी बी) {
वापसी ए बी;
}
टेम्पलेट int add
templateनिष्कर्षT add(T a, T b) { return a b; } template int add (int a, int b) { return a b; } void tmp() { add (10, 2); }
क्लैंग की एएसटी प्रिंटिंग क्षमता टेम्पलेट इंस्टेंटेशन के लिए कंपाइलर द्वारा उत्पन्न कोड का निरीक्षण करने का एक उपयोगी तरीका प्रदान करती है। यह कार्यान्वयन विवरण को समझने, डिबगिंग और सी में टेम्पलेट-आधारित कोड को अनुकूलित करने के लिए अमूल्य हो सकता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3