2015-07-14 10 views
5

को स्थिरांक सत्ता जोड़ा जा रहा है मैं एक सी मॉड्यूल है कि एक आगे घोषित struct के सूचक के साथ उपयोगकर्ता के लिए एक संभाल प्रस्तुत करता है, तो तरह बनाया है, तो:अपारदर्शी संभाल

typedef struct FOO_Obj *FOO_Handle; 

मैं तो समारोह प्रोटोटाइप घोषणा करते हैं कि

void FOO_work(const FOO_Handle fooHandle); 

const -नेस कैसे लागू किया जाता है: एक const योग्य पैरामीटर thusly रूप में इसका इस्तेमाल?

const struct FOO_Obj *FOO_Handle // A 
struct FOO_Obj *const FOO_Handle // B 
const struct FOO_Obj *const FOO_Handle // C 

या यह यूबी है?

उत्तर

2

बी (वहाँ कोड आप प्रस्तुत के साथ कोई अपरिभाषित व्यवहार है।)

समारोह कॉल

void FOO_work(const FOO_Handle fooHandle); 

समारोह becode करेंगे

void FOO_work(struct FOO_Obj* const fooHandle); 

चर fooHandle के बराबर है गैर-कॉन्स struct FOO_Obj ऑब्जेक्ट के लिए एक कॉन्स पॉइंटर। आप कोस्ट ऑब्जेक्ट को पॉइंटर बनाने के लिए fooHandle पर कॉन्स्ट क्वालिफायर जोड़ने में सक्षम नहीं होंगे।

typedef const struct FOO_Obj* FOO_ConstHandle; 
+0

धन्यवाद:

इसके बजाय, यदि आप एक स्थिरांक वस्तु के लिए एक सूचक है, और struct छिपा रखना चाहते हैं, तो आप एक typedef करना चाहिए। गैर-'const' डेटा के लिए 'कॉन्स्ट' सूचक जो मुझे चाहिए, इसलिए मैं सही रास्ते पर था – Toby

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