मैं एक हेडर फाइल में निम्नलिखित घोषणा की है:आगे की घोषणा साइड इफेक्ट के साथ टाइपपीफ?
struct my_struct;
int func(struct my_struct* s); // Passing struct my_struct*
आगे घोषणा के बिना, संकलक जाहिर this error देना होगा:
error: 'struct my_struct' declared inside parameter list
हालांकि, अगर मैं की जगह एक टाइपपीफ के साथ my_struct
की आगे की घोषणा, और तदनुसार फ़ंक्शन घोषणा अपडेट करें, यह compiles fine:
typedef struct my_struct my_struct_t;
int func(mystruct_t* s); // Passing my_struct_t*
मजे की बात है, अगर मैं typedef रखने के लिए, लेकिन मूल घोषणा my_struct
उपयोग करें, यह also compiles:
typedef struct my_struct my_struct_t;
int func(struct my_struct* s); // Passing struct my_struct*
किसी नोटिस किया है कि? क्या यह व्यवहार एक दुष्प्रभाव है?
टाइपपीफ आगे की घोषणा के रूप में भी कार्य करता है, यह टाइप नाम को दायरे में लाता है। –
@DanielFischer हां, मैंने देखा है :) :) लेकिन मुझे मानक बताते हुए कुछ भी नहीं मिला। क्या मैं कुछ भुल गया? –
संरचना में सूचक बनाने के लिए आगे की घोषणा की कोई आवश्यकता नहीं है। यह सिर्फ एक सम्मेलन है। क्या मै गलत हु? –