कुछ C ++ कंपाइलर अनाम यूनियनों और स्ट्रक्चर्स को मानक C ++ के विस्तार के रूप में अनुमति देते हैं। यह थोड़ा-बहुत चीनी है जो कभी-कभी बहुत मददगार होता है।
तर्क क्या है जो इसे मानक का हिस्सा होने से रोकता है? क्या कोई तकनीकी अवरोध है? एक दार्शनिक? या सिर्फ इसे सही ठहराने की जरूरत नहीं है?
यहाँ एक नमूना है जो मैं बात कर रहा हूँ:
struct vector3 {
union {
struct {
float x;
float y;
float z;
};
float v[3];
};
};
मेरा संकलक इसे स्वीकार करेगा, लेकिन यह चेतावनी देता है कि "नामहीन संरचना / संघ" C ++ के लिए एक गैर-मानक विस्तार है ।
struct { int i; } a; a.i = 0;
(प्रकार का कोई नाम नहीं है)। दूसरा यह एक है, जिसे C ++ समर्थन नहीं करता है: struct { int i; }; i = 0;
(प्रकार का कोई नाम नहीं है, और यह आसपास के दायरे में बच जाता है)। C ++, हालांकि, अनाम और अनाम दोनों यूनियनों का समर्थन करता है ।