سؤال

لدي عينة المشروع (ليس لي) وهو في Visual C++ 6.أحاول تحويله إلى Visual Studio 2008.

أقدم المشروع باستخدام المشغلات الأساسية.الآن الأسئلة هي:

  1. ما هي precompiled الرؤوس ؟

  2. منذ أقدم المشروع باستخدام المشغلات الأساسية.أنا أيضا استخدامها في Visual Studio 2008 (مشروع جديد).ولكن يمكنني الحصول على أخطاء قائلا "هل نسيت أن تشمل stdafx.ساعة", أن علاج المشكلة ، لا تشمل "stdafx.ح" في كل ملف المصدر.التي عملت تماما.ولكن أقدم المشروع ليس بما في ذلك "stdafx.ح" في كل ملف ؟ ثم كيف يمكن التقيد بها لتشمل "stdafx.ح" في كل ملف المصدر.لأن ليس كل ملف مصدر في حاجة إلى تضمين الملفات المحددة في "stdafx.ح", فقط عدد قليل لا.كيف فعلت ؟

تحرير: كيف يمكنني EXLCUDE بعض الملفات من استخدام رأس PRECOMPILED?

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

المحلول

ما هي precompiled الرؤوس ؟

في كثير من الأحيان C++ الملفات المصدر وتشمل رؤوس من المكتبات الخارجية.في ويندوز يمكنك تضمين windows.h.هذه الملفات رأس يمكن أن تكون كبيرة جدا وأنها تأخذ بعض الوقت لهذه العملية.كل وقت التحويل البرمجي C++ الملف المترجم له إلى قراءة ومعالجة الآلاف من الأسطر من هذه الملفات رأس.ولكن المكتبات الخارجية لا تتغير و يمكنك حفظ الكثير من الوقت إذا كنت فقط معالجة هذه الملفات مرة واحدة وحفظ النتيجة.

على رأس precompiled هو ببساطة مجموعة من رأس الملفات التي تم تجهيزها على شكل وسيط في وقت لاحق يمكن أن تستخدم من قبل المترجم مرة أخرى ومرة أخرى.

المشغلات الأساسية في Visual C++

في Visual C++ فمن المعتاد أن #include كل ما تبذلونه من غير تغيير رأس الملفات في stdafx.h.ثم إرشاد برنامج التحويل البرمجي لإنشاء رأس precompiled stdafx.pch أثناء ترجمة stdafx.cpp الذي لا يفعل شيئا ولكن تشمل stdafx.h.إذا كنت ترغب في استخدام رأس precompiled في آخر .cpp الملف يجب أن تشمل stdafx.h الأولى يتضمن ملف تعليمات المترجم إلى استخدام stdafx.pch بالنسبة رأس precompiled.

إذا كنت تحصل على خطأ حول عدم إدراج stdafx.h عليك ببساطة أن يكلف مترجم إلى عدم استخدام رأس precompiled لهذا الملف المصدر.(أو يمكنك تضمين stdafx.h.)

رأس Precompiled الإعدادات الفردية الملفات المصدر

Visual C++ يتيح لك التحكم في إعدادات مترجم كامل المشروع و الملفات الفردية.للوصول إلى خصائص فردية تحديد مصدر الملف في "مستكشف الحلول" انقر بزر الماوس الأيمن وحدد خصائص من قائمة السياق.خيارات رؤوس precompiled يتم العثور على في خصائص تكوين => C/C++ => رؤوس Precompiled.إذا قمت بتعديل هذه الإعدادات سوف غالبا ما أريد أن أفعل ذلك مع كل تكوينات (مثلا ، التصحيح و الإصدار).

عند استخدام رؤوس precompiled سيكون لديك الإعداد للمشروع بأكمله الذي يرشد مترجم إلى استخدام stdafx.pch على رأس precompiled.على stdafx.cpp سوف الإعدادات الفردية التي يكلف مترجم لتوليد stdafx.pch, و إذا كان لديك بعض ملفات المصدر التي لا تشمل stdafx.h يمكنك تعيين الإعدادات الفردية على هذه عدم استخدام المشغلات الأساسية.

نصائح أخرى

عند ترجمة التعليمات البرمجية، يتعين على المحول البرمجي أن ينظر في جميع الرؤوس # المحظوظين لمعرفة كيفية ترجمة التعليمات البرمجية في ملف .cpp الخاص بك.

مع مشاريع كبيرة (أو منها باستخدام المكتبات مثل MFC) يمكن أن تصبح هذه الرؤوس هضاء، وبالتالي استغرق وقتا طويلا لتجميعها.

نظرا لأن معظم هذه الرؤوس لا يتغيرون في كثير من الأحيان (إذا كان ذلك من أي وقت مضى)، فيمكنك الحصول على الترجمة إلى "precompile" لهم - إنها تعالجها وتوفر حالتها إلى رأس مسبق. في المرة التالية التي تتجمع فيها، لا تحتاج إلى قراءة وتجميع جميع تلك الرؤوس مرة أخرى، لذلك هو أسرع بكثير.

شرط واحد في Visual Studio هو أنه إذا كنت تستخدم رأس مسبقا، فيجب تضمينه في كل ملف في المشروع.

إذا كان المشروع صغيرا، أو لا تبنيه في كثير من الأحيان، فيمكنك فقط تعطيل خيار "رأس الرأس المعبد" (في إعدادات المشروع. هذا ينطبق على كامل المشروع). التأثير الوحيد الذي ستحصل عليه هو أنه قد يترجم ببطء أكثر. أو اترك الخيار ممكنا وإضافة #include "Stdafx.h" كأول تشمل في كل ملف.

  1. يرى MSDN.
  2. مستخدم. تحتاج إلى تضمين "Stdafx.h" في كل ملف CPP. النقطة برمتها هي أنهم يتمتعون بالصدفة، ولا داعي للقلق أنه لا يتم استخدام كل منهم في بعض ملف ملموس.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top