मेरे पास एक संरचना है:क्या यह एक यौगिक शाब्दिक में एक अनाम संघ असाइन करने के लिए संभव (कानूनी) है?
typedef struct _n
{
int type;
union {
char *s;
int i;
};
} n;
जब मैं एक यौगिक शाब्दिक असाइन करने का प्रयास करता हूं, जैसे:
node n1 = {1, 0};
node n2 = {2, "test"};
gcc मुझे कुछ चेतावनियां देता है जैसे:
warning: initialization makes pointer from integer without a cast
warning: initialization from incompatible pointer type
ठीक है, यह स्पष्ट है कि संकलक मेरे बारे में निश्चित रूप से एक संभवतः संदिग्ध प्रकार के लिए एक मूल्य असाइन करने के बारे में निश्चित नहीं है। हालांकि, अगर मैं अधिक सटीक निर्दिष्ट करने का प्रयास करता हूं:
node n0 = {type: 1, i: 4};
मुझे मिलता है:
error: unknown field ‘i’ specified in initializer
मैंने पढ़ा है कि अगर मैं i:
से पहले (union <union name>)
डालता हूं तो यह काम कर सकता है। हालांकि, मुझे एक अनाम संघ होना पसंद है। क्या इसे करने का कोई तरीका है?
मुझे पहली बार आश्चर्य हुआ कि मैंने इसे देखा, लेकिन जीसीसी को वास्तव में कानूनी (हालांकि बहिष्कृत) नामित प्रारंभिक वाक्यविन्यास है। – ephemient
कि (मुझे लगता है कि बहिष्कृत) प्रारंभकर्ता वाक्यविन्यास मुझे कुछ कर्नेल मॉड्यूल कोड पढ़ने से मिला है .. 'fops' संरचनाओं को अक्सर इस तरह लिखा जाता है। मैं अब सी 99 रास्ते पर स्विच करूंगा। अज्ञात यूनियनों के बारे में बहुत बुरा, मुझे नहीं पता था कि वे मानक नहीं थे, मेरे लिए इसे साफ़ करने के लिए धन्यवाद। – Steve