मैं सीकॉन्स्ट आत्म निर्देशात्मक संरचनाओं
में लिख रहा हूँ मैं एक नए प्रकार (noFunc_menuEntry) जो एक आत्म निर्देशात्मक संरचना से बना है परिभाषित किया है।
struct noFunc_menuEntry_tag {
const char *text;
struct noFunc_menuEntry_tag *up_entry;
struct noFunc_menuEntry_tag *down_entry;
struct noFunc_menuEntry_tag *back_entry;
struct noFunc_menuEntry_tag *enter_entry;
};
typedef struct noFunc_menuEntry_tag noFunc_menuEntry;
मैं इस तरह चर की एक श्रृंखला परिभाषित करने की जरूरत:
menuEntry_1 = {title_1, &menuEntry_2, &menuEntry_4, &menuEntry_1, &menuEntry_5};
menuEntry_2 = {title_2, &menuEntry_3, &menuEntry_1, &menuEntry_1, &menuEntry_6};
और इतने पर।
इसलिए मुझे चर की घोषणा और परिभाषा को अलग करने की आवश्यकता है, क्योंकि प्रत्येक चर अन्य चर पर निर्भर करता है। के लिए
void menu_init(void)
{
menuEntry_1.text = title;
menuEntry_1.up_entry = &menuEntry_2
}
और इतने पर: एक हेडर फाइल में मैं घोषणा
noFunc_menuEntry menuEntry_1, menuEntry_2, menuEntry_3, menuEntry_4, menuEntry_5, menuEntry_6;
चर आदि ..., और एक समारोह में एक ग फ़ाइल में मैं प्रारंभ किया है लिखा है अन्य सदस्यों और चर।
हालांकि मैं अपने चर const
होना चाहते हैं:
const noFunc_menuEntry menuEntry_1, menuEntry_2, menuEntry_3, menuEntry_4, menuEntry_5, menuEntry_6;
तो मेरे सवाल घोषणा और प्रकार मैं परिभाषित किया है की const
चर की परिभाषा separing बारे में है। मैं कैसे कर सकता हूँ? क्या मुझसे कुछ गलत हो रही है?
स्वाभाविक रूप से अगर मैं घोषणा में const
जोड़ता हूं, तो संकलक मुझे एक त्रुटि रिपोर्ट करता है जब मैं चर शुरू करता हूं (मैं केवल-पढ़ने योग्य चर लिखने की कोशिश कर रहा हूं)।
में यह परिभाषित करने के साथ आगे बढ़ना आप पहले से ही 'menuEntry_1 = साथ चर init, तो {TITLE_1, और menuEntry_2, और menuEntry_4, और menuEntry_1, और menuEntry_5};', क्यों आप उन्हें फिर से 'menu_init' में प्रारंभ होगा? – user694733
चूंकि आपकी संरचना में इन (ग्लोबल) चर के लिए * पॉइंटर्स * शामिल हैं, मेरा मानना है कि आप उन्हें केवल परिभाषित करने और एक पंक्ति में आरंभ करने में सक्षम होना चाहिए, यानी प्रारंभिकरण के लिए कार्य करने की आवश्यकता नहीं है।यह सच है कि * "प्रत्येक चर अन्य चरों पर निर्भर करता है" *, लेकिन यदि आप 'menuEntry_1' सामग्री बदल रहे हैं, तो इसका मतलब यह नहीं है कि '& menuEntry_1' बदल जाएगा। – Groo
@ user694733: यदि मैं उन्हें 'const' के रूप में उपयोग नहीं करता हूं, तो मैं 'menu_init' में चर प्रारंभ करता हूं, लेकिन यदि उन्हें स्वाभाविक रूप से' const 'होना है, तो मैं' menu_init' का उपयोग नहीं करता हूं। मैं इसे करने का सही तरीका ढूंढ रहा था! – BzFr