2009-03-17 7 views
21

उत्सुकता से, मैं ज़ेंड इंजन एपीआई कोड पढ़ रहा हूं और उनकी # परिभाषा में ## का सामना करना पड़ा। उदाहरण के लिए, /usr/lib/php5/Zend/zend_API.h पर:पढ़ना ज़ेंड इंजन एपीआई कोड: ## (डबल हैश) का क्या अर्थ है?

#define ZEND_FN(name) zif_##name 
#define ZEND_MN(name) zim_##name 

क्या ## (डबल हैश) प्रतीकों इन दो पंक्तियों में क्या मतलब है?

उत्तर

30

## इसके बाद क्या है इसके साथ ## से पहले क्या है। तो अपने उदाहरण करने में ZEND_FN(foo)zif_foo

6

इको RVV के जवाब में परिणाम होगा।

ध्यान रखें कि शाब्दिक तारों को संयोजित करते समय आपको प्री-प्रोसेसर/कंपाइलर्स के बीच कुछ असंगतता मिल सकती है। कुछ की आवश्यकता होगी ##

#define STR_CAT(s1, s2) s1 ## s2 

const char s[] = STR_CAT("concat", "enation") 

अन्य जबकि में के रूप में यह पर baulk जाएगा, और बजाय सिर्फ अपेक्षा करते हैं कि दो शाब्दिक संकलक द्वारा शामिल हो जाएगा (जैसा कि पूर्व के लिए विरोध प्रोसेसर), तो आवश्यकता होगी

#define STR_CAT(s1, s2) s1 s2 

HTH

संबंधित मुद्दे