واحد ترجمه (برنامه نویسی)
در واژگان ضروری زبانهای برنامهنویسی C و ++C، واحد ترجمه، آخرین ورودی کامپایلر C و ++C است که از آن فایل شی ساخته میشود. در استفاده عامیانه گاهی از آن بعنوان واحد گردآوری یاد می شود. واحد ترجمه تقریباً از یک فایل منبع پس از پردازش توسط پیش پردازنده C تشکیل شده است. به این معنی که فایل های هدر موجود در بخش های include# به معنای واقعی کلمه گنجانده شده است ، ممکن است بخش هایی از کد در ifndef# وجود داشته باشn و ماکروها گسترش یافته باشند.
محتوا[ویرایش]
یک برنامه C از واحدهایی به نام فایلهای مبدأ (یا فایل های پیش پردازش) تشکیل شده است که علاوه بر کد منبع ، بخش هایی را برای پیش پردازنده C نیز شامل می شود. واحد ترجمه ، خروجی پیش پردازنده C است - یک فایل منبع پس از پردازش اولیه.
پیش پردازش بطور خاص شامل گسترش پرونده(فایل) منبع برای جایگزینی همه دستورالعمل های include# با پرونده لقوی(لفظی) اعلام شده در این دستورالعمل (معمولاً پرونده های هدر ، اما گاهی سایر فایلهای منبع) به صورت بازگشتی است. نتیجه این مرحله یک واحد ترجمه پیش پردازشی است. مراحل بعدی شامل گسترش کلان دستورالعمل های define# ، و گرداوری مشروط از دستورالعمل های ifdef# ، از جمله موارد دیگر است. این مراحل، واحد ترجمه پیش پردازشی را به یک واحد ترجمه تبدیل می کند. از یک واحد ترجمه ، کامپایلر برای تشکیل یک برنامه اجرایی، یک فایل شیء تولید می کند ، که می تواند بیشتر پردازش و پیوند داده شود (احتمالاً با سایر فایل های شی).
توجه داشته باشید که پیش پردازنده عمدتا، زبان agnostic است و یک پیش پردازنده واژگانی است که در سطح تجزیه و تحلیل واژگانی کار می کند - تجزیه را انجام نمی دهد و بنابراین قادر به انجام هیچ پردازش خاصی برای نحو(گرامر) C نیست. ورودی کامپایلر واحد ترجمه است ، و بنابراین هیچ بخشنامه پیش پردازنده ای را مشاهده نمی کند ، زیرا همه قبل از شروع کامپایل پردازش شده اند. در حالی که واحد ترجمه داده شده، اساساً بر پایه یک فایل استوار است ، ممکن است -خصوصاً به دلیل درج بازگشتی هدرها- کد منبع واقعی وارد شده به کامپایلر به طور کلی متفاوت از پرونده منبعی باشد که برنامه نویس مشاهده می کند .
دامنه[ویرایش]
واحدهای ترجمه، یک دامنه - تقریباً دامنه پرونده - و عملکرد مشابه با دامنه ماژول را تعریف می کنند. در اصطلاحات C به این تعریف، پیوند داخلی گفته می شود که یکی از دو شکل پیوند در C است. اسامی توابع و متغیرهای اعلام شده در خارج از بلوک یک تابع ممکن است فقط در یک واحد ترجمه معین قابل مشاهده باشند ، در این صورت گفته می شود که آنها پیوند داخلی دارند - برای لینک دهنده قابل مشاهده نیستند- یا ممکن است برای سایر پرونده های شی قابل مشاهده باشد. ، در این حالت گفته می شود که آنها پیوند خارجی دارند و برای لینک دهنده قابل مشاهده هستند.
C مفهومی از ماژول ها ندارد. با این حال ، فایلهای جداگانه شی (و از این رو واحدهای ترجمه مورد استفاده برای تولید پرونده های شیء) به طور مشابه با ماژول های جداگانه کار می کنند ، و اگر یک فایل منبع شامل پرونده های منبع دیگر نباشد ، ممکن است پیوند داخلی (دامنه واحد ترجمه) به عنوان "دامنه پرونده ، شامل تمام پرونده های هدر" فکر شود.
سازمان کد[ویرایش]
بخش عمده ای از کد پروژه به طور معمول در پرونده هایی با پسوند .c (یا cpp. ، یا ++C. یا CC. برای ++C ، که از اینها معمولا .cpp استفاده می شود) نگه داشته می شود. پرونده هایی که قرار است درج شوند معمولاً دارای پسوند .h هستند.( hpp یا. hh نیز برای ++C استفاده می شود ، اما .h حتی برای++C متداولتر است) ، و عموماً وقتی که هدر در چندین فایل مبدا درج می شود حاوی تعاریف تابع یا متغیر برای جلوگیری از تداخل نام نیستند ، همان طور که اغلب اتفاق می افتد. پرونده های هدر می توانند در سایر پرونده های هدر وجود داشته باشند - و اغلب وجود دارند-. برای کلیه پرونده های .c در یک پروژه استاندارد است که حداقل یک پرونده hh را در خود جای دهد.
جستارهای وابسته[ویرایش]
واحد گرداوری تکی
منابع[ویرایش]
This article "واحد ترجمه (برنامه نویسی)" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:واحد ترجمه (برنامه نویسی). Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.