سؤال

أحاول تضمين نظامين أساسيين 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 بعد الآن.

نصائح أخرى

هذا بسبب تشغيل الرؤوس المترجمة مسبقًا - قم بإيقاف تشغيلها وستكون بخير.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top