stdafx یک فایل .hاست که توسط IDE wizard مایکروسافت ویژوال استودیو تولید شده و فایلهای include سیستم استاندارد و فایلهای include پروژه خاص (project specific) رو که مکررا استفاده میشن اما به ندرت تغییر می کنند، توصیف میکنه. به بیان دیگر، stdafx یک اسم پیش فرض برای "دستوردهنده هدرهای از پیش کامپایل شده" هست. هدرهایی که در این فایل شامل شده اند، تنها یک بار کامپایل میشوند و اطلاعات در دیسک ذخیره میشه. موقع کامپایل کردن برنامه، کامپایلر به جای parse (تجزیه) کردن همه هدرها، فقط داده های از پیش کامپایل شده رو بارگیری میکنه. به این ترتیب، زمان کامپایل برنامه تا حد زیادی کاهش پیدا می کنه.
std در stdafx.h مخفف کلمه "استاندارد" هست اما AFX مخفف عبارت Application Framework eXtension (توسعه چارچوب کاربرد) هست که اصالتا مربوط به (Microsoft Foundation Classes (MFC میشه. پروژه های ویژوال استودیو ممکنه به طور اختیاری از هدرفایلهای از پیش کامپایل شده اجتناب کنند، علاوه بر این، ممکنه یک اسم دیگه رو برای اونها مشخص کنند (هرچند stdafx.h به طور پیش فرض استفاده میشه)
کامپایلرهای سازگار مثل VC++ 6.0 (و نسخه های جدیدترش) این فایل رو از پیش کامپایل می کنن تا زمان کلی کامپایل رو کاهش بدهند. Visual C++ هیچ چیزی رو که قبل از خط #include "stdafx.h" باشه کامپایل نمی کنه مگر اینکه گزینه /Yu'stdafx.h' به طور پیش فرض چک نشده باشه؛ در واقع اون کدها رو کامپایل شده قلمداد می کنه!
مشکل اینجاست که استفاده از هدرهای از پیش کامپایل شده، منجر به اضافه شدن تمام اون هدرها به هر فایل .cpp میشه و این مسئله باعث میشه حجم برنامه کلی افزایش پیدا کنه (مخصوصا وقتی پروژه شما 200 فایل .cpp داشته باشه!) اما اگر زمان برای شما مهمتره، چاره ای جز استفاده از stdafx ندارید!
No comments:
Post a Comment