2009-06-11 9 views

उत्तर

25

गैर struct क्षेत्रों के रूप में वास्तव में एक ही:

#include <stdio.h> 
int main (int c, char *v[]) { 
    struct _a { 
     int a1; 
     volatile int a2; 
     int a3; 
    } a; 
    a.a1 = 1; 
    a.a2 = 2; 
    a.a3 = 3; 
    return 0; 
} 

आप "volatile struct _a {...}" का उपयोग करके पूरे struct के रूप में अस्थिर चिह्नित कर सकते हैं, लेकिन विधि के ऊपर व्यक्तिगत क्षेत्रों के लिए है।

9

सुंदर सीधे आगे होना चाहिए this लेख के अनुसार:

अंत में, यदि आप एक struct या संघ को अस्थिर लागू होते हैं, संपूर्ण सामग्री struct/संघ के अस्थिर कर रहे हैं। यदि आप यह व्यवहार नहीं चाहते हैं, तो आप संरचना/संघ के व्यक्तिगत सदस्यों को अस्थिर योग्यता लागू कर सकते हैं।

1

सी/सी ++ अस्थिर कीवर्ड पर बस एक चेतावनी।

जब तक कि आप नहीं जानते कि आप क्या कर रहे हैं, आपको इसका कभी भी उपयोग नहीं करना चाहिए।

C/C++ अस्थिर! = जावा/सी # अस्थिर

अस्थिर थ्रेडेड कोड में मदद नहीं करता है, जब तक आप वास्तव में पता है कि तुम क्या कर रहे हैं, तो आप C++ 0x परमाणु टेम्पलेट (या कुछ इसी तरह) का उपयोग करने की जरूरत है।

हार्डवेयर रजिस्टरों को नियंत्रित करते समय मुझे अस्थिरता का उपयोग करने का एकमात्र समय था।

+0

मुझे लगता है कि आपने कहा है कि कड़ाई से जरूरी की तुलना में थोड़ा मजबूत है। अस्थिर थ्रेड कोड के साथ मदद करता है, खासकर सिंगल कोर एम्बेडेड प्लेटफॉर्म पर। लेकिन आपको यह जानना होगा कि इसका उपयोग कैसे करें। डीएमए के साथ या उसके बिना हार्डवेयर रजिस्टरों का संदर्भ देते समय यह प्रभावी रूप से अनिवार्य भी है, विशेष रूप से एक रजिस्टर जिसे स्थिति के लिए मतदान किया जाएगा। अपने कैश को समझना और इसे सही तरीके से प्रबंधित करना और अपने प्लेटफ़ॉर्म पर परमाणु संचालन कैसे करना है, यह समझना भी आवश्यक है। – RBerteig

+0

आप सही हैं। मुझे नहीं पता था कि जब मैं डीएमए कहता था तो मैं सोच रहा था, मेरा मतलब एमएमआईओ था। मैंने कुछ बेहतर जवाब दिया है (मुझे उम्मीद है)। –

+0

विकिपीडिया (http://en.wikipedia.org/wiki/Volatile_variable) के अनुसार, सी # में सी/सी ++ के समान व्यवहार होता है, जबकि केवल जावा का एक अलग अर्थपूर्ण होता है। –

0

तो सदस्यों की घोषणा के रूप में अस्थिर (यानी एक संकेत हैंडलर या अन्य (पास) परमाणु चर), तो आप शायद नहीं अस्थिर (का उपयोग करना चाहिए के रूप में सबसे compilers अगर इसकी नहीं इसे दूर अनुकूलित करेंगे कारण कुछ व्यवधान सर्विसिंग के लिए बदल नहीं कर रहे हैं पर्याप्त पास)।

अन्यथा, के रूप में अन्य लोगों ने कहा .. बस उदासीनता देखने के लिए अगर आपके संकलक वास्तव में आप :)

कुछ मामलों में, यानी के साथ सहमत हैं का उपयोग यह तो एएसएम की जांच जीसीसी के कुछ संस्करणों .. इसके लायक उन पर गौर करके उदासीनता।

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