8

के लिए चेतावनी। I ऐसी सभी चेतावनियों को दबाने के लिए नहीं चाहते हैं, केवल वे जो प्रीप्रोसेसर पर निर्भर होंगे, उदा।से बचें "नहीं पहुंचा जा सकता कोड" मैं वहाँ किसी भी तरह से एक "नहीं पहुंचा जा सकता कोड" कुछ है कि पूर्वप्रक्रमक के कारण होती है के लिए चेतावनी हो रही से बचने के लिए अगर यह पता लगाने की कोशिश कर रहा हूँ पूर्वप्रक्रमक निर्भर कोड

#if WINDOWS 
    public const GamePlatform platform = GamePlatform.PC; 
#else 
    public const GamePlatform platform = GamePlatform.MAC; 
#endif 

और बाद में वहाँ कोड से चला जाता है कि है:

if (platform == GamePlatform.PC) 
{ 
    ... 
} 
else 
{ 
    ... 
} 

उन दो वर्गों में से एक हमेशा "नहीं पहुंचा जा सकता कोड" के रूप में पता लगाया जाएगा, और हम हर जगह उन मिल गया है। मैं कोशिश करते हैं और यह बनाता है कई चेतावनियों से छुटकारा पाने के लिए करना चाहते हैं, लेकिन मैं अभी भी वैध तरीके से पहुँच योग्य नहीं कोड के लिए चेतावनी प्राप्त करना चाहते हैं। (हकीकत में, केवल दो प्लेटफ़ॉर्म से अधिक है, इसलिए प्लेटफ़ॉर्म-विशिष्ट कोड का प्रत्येक हिस्सा अनावश्यक चेतावनियों का ढेर बनाता है।)

+1

इस प्रश्न का संदर्भ के रूप में उपयोग करें। http://stackoverflow.com/questions/1930793/is-there-a-way-to-get-vs2008-to-stop-warning-me-about-unreachable-code/1930840#1930840 विशेष रूप से जेसन नीचे के जवाब को देखो। –

+0

मैंने पहले अन्य प्रश्नों की खोज की थी, इस मुद्दे के बारे में किसी भी विशेष रूप से प्रीप्रोसेसर से निपटने को नहीं देखा। (पहुंचने योग्य कोड के बारे में बहुत सारे प्रश्न हैं, लेकिन मैंने जो भी चेक किया है, उनमें से कोई भी एक ही परिदृश्य नहीं लग रहा था।) इस बात से परेशान होना कि इस से निपटने का कोई तरीका नहीं है जो या तो कोड को महत्वपूर्ण रूप से खराब नहीं करता है, प्रदर्शन को कम करता है (थोड़ा), या संभावित उपयोगी चेतावनियों को छुपाएं। –

उत्तर

8

विकल्प 1: प्री-प्रोसेसर मैक्रोज़ को जहां भी आपके पास if-statement है, जोड़ें। यह अधिक प्रदर्शनकारी होगा, लेकिन शायद थोड़ा सा गुस्से में।

विकल्प 2: मंच चर const नहीं करें। इसे स्थैतिक रूप से व्यवस्थित करने के लिए चेतावनी दी गई है कि चेतावनी मेरे लिए चली गई है।

+0

लेकिन "विकल्प 2" के साथ इतना है कि अपशिष्ट से एक तरह का संकलक, दोनों "वर्गों" या आईएल में 'if' की" शाखाओं ", और कहा कि आईएल के ज्यादा इस्तेमाल किया जा कभी नहीं होगा का अनुवाद करना होगा (हालांकि बहुत महत्वपूर्ण नहीं यदि आपको डीएलएल फ़ाइल के आकार की परवाह नहीं है)। –

+0

मैं मानता हूं कि विकल्प 2 शायद वह नहीं है जो मैं करता हूं, लेकिन यह सबसे आसान और कभी-कभी यह महत्वपूर्ण है। यह उल्लेखनीय है कि "पहुंचने योग्य कोड" का अनुवाद आईएल में नहीं किया गया है, इसलिए इसे स्थाई पाठ में बदलना आपके वर्तमान परिस्थिति से "बदतर" होगा जबकि विकल्प 1 चेतावनी के समान होगा। – lukegravitt

+0

हम्म, भद्दा कोड बनाम थोड़ा धीमे कोड के शाश्वत दुविधा - मुझे पता है मैं विकल्प 1 के साथ जाने के _should_, लेकिन मैं वास्तव में हर जगह पूर्वप्रक्रमक-सामान के साथ कोड प्रदूषण नापसंद करते हैं। इसे पढ़ने के लिए मुश्किल बनाता है। साथ ही, चूंकि संकलक इसे अनदेखा करता है, इसलिए निष्क्रिय कोड ब्लॉक में खराब कोड हो सकता है जो मुझे याद आ रही है जो केवल '# परिभाषित' बदलते समय दिखाई देगी ... –

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

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