: मुख्य कार्यक्रम में फिरसी: नियत "स्थिर स्थिरांक चार * स्थिरांक" मैं कुछ वैश्विक इस तरह फ़ाइल के शीर्ष पर परिभाषित तार के साथ एक कार्यक्रम के लिए "स्थिर स्थिरांक चार *"
static const char * const STRING_A = "STRING A";
static const char * const STRING_B = "STRING B";
लूप मैं बार-बार एक समारोह बुलाता हूं। इस फ़ंक्शन में एक पॉइंटर होता है जो उपयोगकर्ता इनपुट के आधार पर उपर्युक्त तारों को इंगित करता है। डिफ़ॉल्ट रूप से मैं इसे STRING_A लिए सेट किया जा करना चाहते हैं, तो क्या मैं अनिवार्य रूप से है यह है:
// Called repeatedly from a loop.
void input_function()
{
static const char *current = STRING_A;
// Do stuff and reassign different strings to "current"
...
}
समस्या यह है कि मुझे लगता है कि जब संकलन मैं है "त्रुटि: प्रारंभकर्ता तत्व स्थिर नहीं है"। यह जीसीसी 4.7.2 का उपयोग कर रहा है। मुझे और क्या भ्रमित करता है कि अगर मैं इनपुट फ़ंक्शन में "स्थैतिक" कीवर्ड से छुटकारा पाता हूं तो त्रुटि दूर हो जाती है। हालांकि यह समाधान नहीं है, क्योंकि कॉल के बीच वर्तमान स्ट्रिंग का ट्रैक रखने के लिए फ़ंक्शन के लिए स्थिर कीवर्ड की आवश्यकता होती है।
स्पष्ट रूप से मैं इसे कई तरीकों से ठीक कर सकता हूं, बस कुछ कॉन्स्ट क्वालीफायरों से छुटकारा पाने के द्वारा। लेकिन मैं समझना चाहता हूं कि यह क्यों काम नहीं कर रहा है।
मेरी वर्तमान समझ यह है कि वैश्विक स्ट्रिंग चर को अलग-अलग तारों को इंगित करने के लिए संशोधित नहीं किया जा सकता है, और न ही उनके व्यक्तिगत वर्णों को संशोधित किया जा सकता है। स्थैतिक कीवर्ड उन्हें स्थानीय फ़ाइल स्रोत में रखता है।
current
वैरिएबल के लिए मेरी समारोह में मेरी समझ है कि स्थिर कीवर्ड इस मामले में स्थिरांक क्वालीफायर मतलब यह है कि स्ट्रिंग बताया कि current
द्वारा करने के लिए बदल सकते हैं यह कार्य करने के लिए कई कॉल से अधिक अपने मूल्य बनाए रखने के लिए अनुमति देता है, और है - लेकिन स्ट्रिंग के वर्ण जो यह इंगित करता है।
मुझे उन बयानों में कोई संघर्ष नहीं दिख रहा है, इसलिए मुझे समझ में नहीं आता कि संकलक एक त्रुटि क्यों देता है - विशेष रूप से यदि current
के "स्थैतिक" विनिर्देशक को हटाया गया है तो उसे कोई समस्या क्यों नहीं है।
धन्यवाद अगर कोई यह बता सकता है कि समस्या क्या है।
मैं अभी भी तेजी से उत्तर के लिए इसके चारों ओर मेरे सिर लेकिन धन्यवाद लपेटकर कर रहा हूँ। –