رؤوس MSVC premompiled: ما هي الملفات التي تحتاج إلى #include "stdafx.h"؟

StackOverflow https://stackoverflow.com/questions/1047152

سؤال

هل يحتاج كل ملف إلى #include "stdafx.h" عند استخدام الرؤوس المسبقة؟ أو هل تحتاج ملفات المصدر فقط إلى تضمينها.

تحرير: أيضا ، ملف رأس بلدي premompiled #includes الكثير من رؤوس STL. لكن ، في رأسي ، لدي أحيانًا وظائف تعود std::vector أو شيء من هذا القبيل ، لذلك أنا بحاجة لذلك #include <vector> على أي حال. هل هذا أسوأ من بما في ذلك stdafx.h؟ أحتاج إلى تضمين تعريفات إطار اختبار الوحدة.

هل كانت مفيدة؟

المحلول

يحتاج كل ملف مصدر إلى تضمينه قبل أي خط غير مرق. لا تحتاج الرؤوس إلى تضمينه ، حيث سيتضمنه كل ملف مصدره قبل أي رأس آخر.

نصائح أخرى

يمكنك تعيين ما إذا كنت تريد استخدام ملف رأس مسبق أم لا على مستوى المشروع أو مستوى الملف. للحصول على إعداد المشروع ، انتقل إلى مربع حوار Project Properties وانقر فوق خصائص التكوين / C / C ++ / الرؤوس المسبقة. هناك خيار لإنشاء/استخدام رأس مسبق. يمكنك الكتابة فوق إعداد مستوى المشروع على كل ملف .CPP عن طريق تعيين نفس الخيار في مربع حوار خصائص الملف.

كل ما تحتاجه من ملفات C/C ++ تحتاج إلى رأسك مسبقًا في الأعلى نعم - إذا تم تعيينه لهذا المشروع. ولكن يمكنك إيقاف تشغيله/في ملف C/C ++ (ما قاله Kei).

إذا كان لديك رؤوس قياسية لتضمينها ، فضعها جميعًا في الرأس المسبق. ثم تريد أن تحتاج إليها في ملفات الرأس العادية (.H). طالما أن جميع المشاريع والملفات تستخدم الرؤوس المسبقة.

كما قال الآخرون ، تحتاج فقط ملفات المصدر إلى تضمين الرأس المسبق. أود فقط أن أضيف أنه ، في رأيي ، يجب أن يتم تجميع الكود بشكل صحيح مع أو بدون رؤوس مسبقة. لتحقيق ذلك ، يجب احتواء الرؤوس ذاتيًا وعدم الاعتماد على الملفات المصدر بما في ذلك الرؤوس المطلوبة الأخرى. أرى رأسًا مسبقًا فقط كوسيلة لتسريع التجميع وليس كمستودع لجميع الرؤوس المستخدمة في المشروع.

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