2009-09-16 9 views
11

मैं अपनी .cpp फ़ाइल में 2 प्लेटफ़ॉर्म-विशिष्ट stdafx.h फ़ाइलों को शामिल करने का प्रयास कर रहा हूं, लेकिन जब मैं इसे #ifdef करने का प्रयास करता हूं तो संकलक नाखुश है।मैं stifafx.h #ifdef करने में असमर्थ क्यों हूं?

#ifdef _WIN32 
#include "stdafx.h" 
#elif _MAC 
#include "MAC/stdafx.h" 
#endif 

आपको आश्चर्य हो सकता है कि मैं मैक कोड में stdafx.h का उपयोग क्यों कर रहा हूं, लेकिन इस समय यह महत्वपूर्ण नहीं है :)।

जब मैं विंडोज़ पर कोड संकलित करने का प्रयास करता हूं, तो मुझे लगता है: घातक त्रुटि C1018। मैंने उसी फ़ाइल में #ifdef के साथ अन्य शीर्षलेख फ़ाइलों को संलग्न करने का प्रयास किया, और संकलक खुश था। इसलिए, ऐसा लगता है कि विंडोज़ को ifdf-ed होने के लिए stdafx.h पसंद नहीं है, या विंडोज केवल # शामिल है, जिसमें फ़ाइल में पहली पंक्ति होने के लिए stdafx.h शामिल है।

तो मेरा सवाल है, क्यों? इसे बंद कर देते हैं और आप ठीक होना चाहिए -

कैट

उत्तर

10

जब संकलक में प्री-कंपाइल हेडर शामिल होता है, तो यह मूल रूप से शीर्षलेख से पहले कुछ भी "भूल जाता है"। इस प्रकार आपका #elif अब #if से मेल नहीं खाता है।

5

इसका कारण यह है तुम हो Precompiled हेडर चालू हो जाता है।

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