कार्य करने के लिए अस्थिर पॉइंटर घोषित करें सी में कार्य करने के लिए पॉइंटर घोषित करने के लिए, ताकि पॉइंटर स्वयं अस्थिर हो।सी:
static void volatile (* f_pointer)(void*);
static void (volatile * f_pointer)(void*);
static void (* volatile f_pointer)(void*);
मैं यह क्यों पूछ रहा हूं? मैंने अस्थिर पॉइंटर्स के बारे में http://wiki.answers.com/Q/Volatile_example_code_sample_coding_of_volatile_pointer पर पढ़ा।
वहाँ कभी कभी अस्थिर संकेत और के साथ समस्याएं हैं अस्थिर सूचक-टू:
अब, यह पता चला है कि अस्थिर चर के संकेत बहुत आम हैं। इन घोषणाओं के दोनों foo घोषित एक अस्थिर पूर्णांक के लिए सूचक होने के लिए: गैर अस्थिर चर के
volatile int * foo;
int volatile * foo;
वाष्पशील संकेत बहुत ही दुर्लभ (मुझे लगता है कि मैं उन्हें एक बार उपयोग किया है), हैं लेकिन मैं बेहतर आगे जाना है और आप वाक्य रचना देना चाहते हैं:
int * volatile foo;
तो, मैं एक सूचक को "अस्थिर" समारोह नहीं कार्य करने के लिए एक अस्थिर सूचक प्राप्त करना चाहते हैं।
धन्यवाद
आप एक अस्थिर सूचक को फ़ंक्शन में क्यों चाहते हैं? इस सूचक को बदलने वाला कौन है? क्या आप जानते हैं कि 'अस्थिर' _really_ का क्या अर्थ है? –
@ जेम्स मैकनेलिस, हाँ, मैं चाहता हूं। यह पॉइंटर थ्रेड 0 द्वारा बदला जाता है और फ़ंक्शन शुरू करने के लिए थ्रेड 1..7 द्वारा उपयोग किया जाता है।इसके बीच बाधा है, लेकिन मैं बाधा डालने से पहले इस सूचक को थ्रेड 0 में मेमोरी में फ्लश करने के लिए चाहता हूं। इसके अलावा मैं इस सूचक को फिर से पढ़ने के लिए धागे 1..7 चाहता हूं ('{बाधा, सूचक पढ़ने, कॉलिंग फ़ंक्शन} का एक लूप है)। मैं कई रजिस्टरों के साथ एक सिस्टम का उपयोग करता हूं, इसलिए कंपाइलर बहुत सारे चर को कैश कर सकता है। क्या मैं सही हू? – osgx
यदि बाधा सही ढंग से लिखा गया है, तो संकलक को इसके मूल्यों को कैशिंग नहीं करना चाहिए - 'अस्थिर' अनावश्यक होना चाहिए। – caf