सी

2017-06-13 15 views
10

में स्पष्ट गिरावट के माध्यम से कैसे करें जीसीसी के नए संस्करण Wimplicit-fallthrough प्रदान करते हैं, जो अधिकांश स्विच स्टेटमेंट्स के लिए बहुत अच्छा है। हालांकि, मेरे पास एक स्विच स्टेटमेंट है जहां मैं सभी केस-स्टेटमेंट्स से गिरावट की अनुमति देना चाहता हूं।सी

क्या कोई स्पष्ट गिरावट करने का कोई तरीका है? मैं इस फ़ाइल के लिए Wno-implicit-fallthrough के साथ संकलन करने से बचना चाहता हूं।

संपादित करें: मैं एक संकलक स्विच या प्रगमा के माध्यम से चेतावनी को बंद नहीं करने के लिए स्पष्ट (यदि संभव हो) के माध्यम से गिरावट का एक तरीका ढूंढ रहा हूं।

+0

शायद [इस] (https://stackoverflow.com/a/3394268/1553090) तुम क्या चाहते है। – paddy

+0

मुझे वही मिला। https://stackoverflow.com/questions/3378560/how-to-disable-gcc-warnings-for-a-few-lines-of-code –

+0

['-Wimplicit-fallthrough'] पर विवरण देखें (https: जीसीसी दस्तावेज में //gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Warning-Options.html#index-Wimplicit-fallthrough)? कोई गैर-विस्तार तंत्र नहीं होगा - संपूर्ण मुद्दा सभी एक्सटेंशन है। –

उत्तर

8

उपयोग __attribute__ ((fallthrough))

switch (condition) { 
    case 1: __attribute__ ((fallthrough)); 
    case 2: __attribute__ ((fallthrough)); 
    case 3: 
     printf("1..3\n"); 
     break; 
} 
+1

यह सही उत्तर है, लेकिन उदाहरण खराब है: - खाली केस निकायों के लिए विद्युत-गिरावट नहीं निकलती है, इसलिए इसकी आवश्यकता नहीं है। – thakis

2

आपको अपनी स्रोत फ़ाइल या स्रोत फ़ाइल के कुछ हिस्से के लिए उस विशेष चेतावनी को अक्षम करने के लिए GCC diagnostic pragmas का उपयोग करने में सक्षम होना चाहिए। आपकी फ़ाइल के शीर्ष पर इस डाल का प्रयास करें:

#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"