لماذا لا أستطيع #ifdef stdafx.h؟
-
07-07-2019 - |
سؤال
أحاول تضمين نظامين أساسيين stdafx.h الملفات الموجودة في ملف .cpp الخاص بي، لكن المترجم غير سعيد عندما أحاول #ifdef.
#ifdef _WIN32
#include "stdafx.h"
#elif _MAC
#include "MAC/stdafx.h"
#endif
قد تتساءل لماذا أستخدم stdafx.h في كود Mac، لكن هذا ليس مهمًا في الوقت الحالي :).
عندما أحاول ترجمة التعليمات البرمجية على نظام التشغيل Windows، أتلقى: خطأ فادح C1018.حاولت إرفاق ملفات الرأس الأخرى مع #ifdef في نفس الملف ، وكان المترجم سعيدًا.لذلك، يبدو أن Windows لا يحب أن يكون stdafx.h #ifdef-ed، أو أن Windows يسمح بذلك فقط #تشمل stdafx.hليكون السطر الأول في الملف.
لذا سؤالي هو لماذا؟
كات
المحلول
عندما يتضمن المترجم رأسًا تم تجميعه مسبقًا، فإنه "ينسى" بشكل أساسي أي شيء جاء قبل الرأس.وبالتالي فإن #elif الخاص بك لم يعد مطابقًا لـ #if بعد الآن.
نصائح أخرى
هذا بسبب تشغيل الرؤوس المترجمة مسبقًا - قم بإيقاف تشغيلها وستكون بخير.