2013-11-24 4 views
7

द्वारा छोड़ा गया है, जिसमें दो अंतर परिभाषाओं में त्रुटि C2360 उत्पन्न करने वाला बड़ा अंतर कहां है?त्रुटि C2360: 'एचडीसी' का प्रारंभ 'केस' लेबल

switch (msg) { 
    case WM_PAINT: 
     HDC hdc; 
     hdc = BeginPaint(hWnd, &ps); // No error 
     break; 
} 

और

switch (msg) { 
    case WM_PAINT: 
     HDC hdc = BeginPaint(hWnd, &ps); // Error 
     break; 
} 
+9

यह एक सी ++ नियम है। बस इसके चारों ओर {braces} डाल दिया। –

उत्तर

9

पहले कानूनी है और दूसरा नहीं है। प्रारंभकर्ता के बिना घोषणा छोड़ना कभी-कभी अनुमति दी जाती है, लेकिन प्रारंभकर्ता के साथ कभी भी नहीं।

Storage allocation of local variables inside a block in c++ देखें।

+1

क्या एचडीसी शुरू करने का कोई बेहतर तरीका है? – Cubinator73

+1

पूरे ब्लॉक को ब्रेसिज़ में रखें क्योंकि हंस ने कहा - मुद्दा दायरा है। बेहतर अभी भी इसे एक अलग विधि में ले जाएं, या कई सौ लाइनों के स्विच स्टेटमेंट के साथ समाप्त करना आसान है। –

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