2010-05-03 6 views

उत्तर

8

मैं कभी कभी कुछ डेटा के बीच एक संघ बनाने के लिए इसका इस्तेमाल करते हैं:

typedef union { 
    struct { 
     int x, y, z; 
    }; 
    int elements[3]; 
} Point; 

इस तरह से मैं आसानी से elements साथ निर्देशांक से अधिक पाश लेकिन यह भी कम प्रपत्र x, y और z बजाय elements[0] उपयोग कर सकते हैं आदि

+0

बेशक, इस तरह का उपयोग बहुत ही अपरिभाषित व्यवहार हो सकता है। सिर्फ इसलिए कि हर कोई ऐसा करता है, इसका मतलब यह नहीं है कि यह मान्य है। :) – unwind

3

यह बिल्कुल ठीक है अगर आप केवल दो मानों को व्यक्त करना चाहते हैं, लेकिन किसी विशेष समूह को स्टैंड-अलोन प्रकार के रूप में कभी भी आवश्यकता नहीं है।

इसे थोड़ा सा पैडियस के रूप में देखा जा सकता है और चीजों के ओवर-इंजीनियरिंग पक्ष की ओर झुकाव हो सकता है, लेकिन इसे स्पष्टता और संरचना जोड़ने का एक बड़ा तरीका भी देखा जा सकता है।

पर विचार करें:

struct State 
{ 
    Point position; 
    float health; 
    int level; 
    int lives_left; 
    int last_checkpoint; 
    char filename[32]; 
}; 

बनाम

struct State 
{ 
    struct 
    { 
    Point position; 
    float health; 
    int level; 
    int lives_left; 
    }    player; 
    struct { 
    int last_checkpoint; 
    char filename[32]; 
    }    level; 
} 

पिछले मामले स्पष्ट रूप से इंडेंट करने के लिए थोड़ा मुश्किल है, लेकिन यह एक बहुत ही स्पष्ट तरीके से व्यक्त करता है कि मूल्यों के कुछ के साथ जुड़े रहे खिलाड़ी, और कुछ स्तर के साथ।

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