5

में एक त्रुटि C2078 उत्सर्जित करता है I VS2013 का उपयोग कर रहा हूं। पूरा कार्यक्रम सी है, सी ++ नहीं।किसी संरचना में 2 डी चार सरणी प्रारंभकर्ता को प्रारंभ करने के लिए नामित प्रारंभकर्ताओं का उपयोग करना VS2013

मैं बिना किसी समस्या के इस तरह एक "तार की सरणी" को प्रारंभ कर सकते हैं:

char titles[4][80] = { "Dad", "Idiot", "Donut Lover", "Fewl" }; // OK! 

मैं एक struct इस तरह की घोषणा कर दी:

typedef struct 
{ 
    char name[80]; 
    char titles[4][80]; 
} Dude; 

जब मैं इस तरह struct प्रारंभ करने की कोशिश :

Dude homer = 
{ 
    .name = "Homer", 
    .titles = { "Dad", "Idiot", "Donut Lover", "Fewl" } // error? 
}; 

मुझे "त्रुटि C2078: बहुत सारे प्रारंभकर्ता" मिलते हैं। यह सरणी प्रारंभिकरण के कारण है- यदि मैं .titles = { ... लाइन को हटा देता हूं, तो त्रुटि दूर हो जाती है। क्यों यह त्रुटि आ रही है? क्या स्ट्रक्चर प्रारंभकर्ता के भीतर इस प्रकार के स्ट्रिंग प्रारंभिकरण को पूरा करने का कोई अलग तरीका है?

अगर मैं struct की घोषणा बदलने पर भी यह

typedef struct 
{ 
    char name[80]; 
    char *titles[4]; 
} Dude; 

तरह देखने के लिए त्रुटि दूर चला जाता है। हालांकि, यह एक बदलाव नहीं है जिसे मैं कर सकता हूं। कोड बेस के अन्य हिस्सों की आवश्यकता है कि इस संरचना का आकार बिल्कुल 400 बाइट्स है।

आगे, मुझे काफी पता है कि मैं प्रत्येक क्षेत्र में भरने के लिए strcpy का उपयोग कर सकता हूं, लेकिन यह मेरे प्रश्न का उत्तर नहीं देता है।

+2

'कोशिश Dude होमर = { " होमर " , {"पिताजी", "इडियट", "डोनट प्रेमी", "फ़्यूल"} }; ' – BLUEPIXY

+2

AFAIK, VS2013 C89 का उपयोग करता है और C89' {.item = ...} 'का उपयोग करने का समर्थन नहीं करता है। (क्या इसके लिए कोई नाम नहीं है?)। जीसीसी ने चेतावनी दी: आईएसओ सी 9 0 [-Wpedantic] शुरू करने के लिए उप-प्रोजेक्ट निर्दिष्ट करने से मना करता है जो दिखाता है कि यह C89 में समर्थित नहीं है। –

+0

मैं संकलित करने के लिए codeblocks का उपयोग करता हूं और यह ठीक है। मुझे लगता है कि यह वीएस मुद्दा है .. मैंने टैग्स 'वीएस' और' वीएस2013' – Ian

उत्तर

0

सी में, यह यह करने के लिए आसान है:

Dude homer = 
{ 
    "Homer", 
    { "Dad", "Idiot", "Donut Lover", "Fewl" } // error? 
}; 

अगर यह काम करता है पता नहीं है, लेकिन आप की कोशिश कर सकते हैं:

Dude homer = 
{ 
    .name = "Homer", 
    .titles[] = { "Dad", "Idiot", "Donut Lover", "Fewl" } // error? 
}; 
संबंधित मुद्दे