2016-03-21 9 views
8

मैं Xcode 7.3 उपयोग कर रहा हूँ, और मैं एक चेतावनी "मैक्रो की अस्पष्ट विस्तार" हो रही है, एक मैक्रो जो फाउंडेशन में परिभाषित किया गया था के लिए है, लेकिन जो मैंने अपनी उपसर्ग फ़ाइल में अपरिभाषित और पुनः परिभाषित किया है। मेरे पास मॉड्यूल सक्षम हैं।Xcode 7.3: उपसर्ग फ़ाइल में जब फिर से परिभाषित करने मैक्रो "मैक्रो की अस्पष्ट विस्तार"

पुन: पेश करने के लिए:

  • सेट "सक्षम मॉड्यूल (सी और ऑब्जेक्टिव-सी)" हाँ करने के लिए निर्माण सेटिंग्स
  • उपयोग निम्नलिखित उपसर्ग फ़ाइल में:

    #import <Foundation/Foundation.h> 
    
    #undef assert 
    #define assert(e) NSLog(@"hi") // implementation is not important 
    
  • उपयोग मुख्य स्रोत फ़ाइल के बाद:

    int main() { 
        assert(42); 
        return 0; 
    } 
    
  • फिर एक्सकोड में निर्माण करें।

  • यह एक "मैक्रो 'ज़ोर' की अस्पष्ट विस्तार" "जोर" मैक्रो का उपयोग करता है स्रोत फ़ाइल में लाइन पर चेतावनी दिखाता है। "Assert 'की इस परिभाषा का विस्तार" सिस्टम हेडर से परिभाषा को इंगित करता है, न कि मेरी पुनर्वितरण। "उपक्रम 'की अन्य परिभाषा" मेरी उपसर्ग फ़ाइल में परिभाषा को इंगित करती है।

यह चेतावनी जब मॉड्यूल अक्षम किया गया है नहीं होता है।

उत्तर

4

यह एक्सकोड में एक बग है; हम सराहना करेंगे अगर आप https://bugreport.apple.com पर एक बग रिपोर्ट दर्ज कर सकते हैं और यहां एक टिप्पणी में बग # छोड़ सकते हैं। इस दौरान इस बग के आसपास काम करने के लिए आपके विकल्प हैं:

  • आप इस मैक्रो के लिए "जोर" से अलग नाम का उपयोग कर सकते हैं।
  • आप GCC_PRECOMPILE_PREFIX_HEADER नहीं करने के लिए की स्थापना का निर्माण सेट के बाद से PCH लाभ का एक बहुत प्रदान नहीं करते हैं आप पहले से ही मॉड्यूल है जब सकता है। उपसर्ग शीर्षलेख अभी भी काम करेगा, यह सिर्फ एक पीसीएच में नहीं बदला जाएगा।
  • आप मॉड्यूल बंद कर सकते हैं।
+4

यह अभी भी एक्सकोड 8 में एक समस्या प्रतीत होता है। –

+1

एक्सकोड 9 में ही – iosdude

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