پیوند کردن (نرمافزار)
برخی از ویرایشها در این مقاله در چارچوب یک تکلیف دانشگاهی انجام شدهاند. این تکالیف توسط ؟ برای دانشجویان ؟ تعیین شدهاند. |
این مقاله، پیوند کردن (نرمافزار)، اخیراً بهواسطهٔ فرایند ایجاد مقاله ایجاد شدهاست. بازبینیکننده در حال بستن درخواست است و این برچسب احتمالاً بهزودی برداشته میشود.
ابزارهای بازبینی: پیشبارگیری بحث اعلان به نگارنده |
خطای اسکریپتی: پودمان «AfC submission catcheck» وجود ندارد.
در زبانهای برنامهنویسی، بهویژه زبانهایی که کامپایل میشوند مانندC ، C++ ، و D ، پیوند توضیح میدهد که چگونه نامها میتوانند یا نمیتوانند به یک موجودیت (Entity) در کل برنامه یا یک واحد ترجمه اشاره کنند.
در زبان های برنامهنویسی خانوادهی C کلمهی کلیدی static
برای محدود کردن دسترسی یک تابع یا متغیر به واحد ترجمه آن استفاده می شود. این استفاده در C++ نیز معتبر است. (این استفاده در نسخههای قدیمی تر مانند C++ 98/03 منسوخ شده است ولی در C++ 11 بازگردانده شده است. ) همچنین، C++ برخلاف زبان C به طور ضمنی با هر const
namespace-scope به عنوان "دارای پیوند داخلی" برخورد می کند، مگر اینکه خلاف آن را با کلمهی extern
مشخص کنیم.
پیوند یک نام با محدوده آن مرتبط، اما از آن متمایز است. دامنهی یک نام بخشی از یک واحد ترجمه است که در آن قابل مشاهده است. به عنوان مثال، نامی با دامنه عمومی (global) (که همان دامنه فایل در C و همان فضای نام جهانی در ++C است) در هر بخشی از فایل قابل مشاهده است و دامنهی آن در انتهای واحد ترجمه به پایان می رسد، خواه آن نام پیوند خارجی یا داخلی داده شده باشد یا خیر.
اگر نام دارای پیوند خارجی باشد، موجودیتی (Entity) که نام آن را نشان میدهد ممکن است از واحد ترجمه دیگری با استفاده از یک اعلان متمایز برای همان نام، و از حوزههای دیگر در همان واحد ترجمه با استفاده از اعلانهای متمایز ارجاع داده شود. اگر نام پیوند داخلی داده شود، چنین اعلامیهای نشاندهنده یک موجودیت متمایز است، اگرچه از همان نام استفاده میکند، اما موجودیت آن میتواند با اعلانهای متمایز در همان واحد ترجمه ارجاع داده شود. نامی که اصلاً پیوندی ندارد را نمیتوان از اعلانهایی در حوزههای مختلف، حتی از داخل واحد ترجمه یکسان، ارجاع داد. نمونه هایی از این نام ها پارامترهای توابع و متغیرهای محلی هستند. جزئیات بین C (که در آن فقط اشیاء و توابع - اما نه انواع - دارای پیوند هستند) و C++ و بین این نمای کلی ساده متفاوت است.
پیوند بین زبان ها باید با کمی دقت انجام شود، زیرا زبان های مختلف نمادهای متفاوتی برای پیوند خارجی دارند و بعضا این موضوع میتواند مشکلساز شود.
پیوند در C[ویرایش]
تعریف "پیوند" به نقل از ISO/IEC 9899:TC3 (استاندارد C99). C از اصطلاح "شناسه" استفاده می کند که در این مقاله از "name" استفاده می شود (که دومی همان چیزی است که C++ برای رسمی کردن پیوند استفاده می کند):
شناسه ای که بیش از یک بار در محدوده های مختلف یا در یک محدوده اعلام شده است را می توان برای ارجاع به یک شی یا تابع توسط فرآیندی به نام پیوند ایجاد کرد.
مثال زیر یک مثال رایج از پیوند است:
/* file demo1.c */
/* extern */ void foo(void); /* extern optional - it's the default */
int main(void)
{
foo();
return 0;
}
/* file demo2.c */
void foo(void)
{
...
}
تابع foo
در دو فایل تعریف شده است و بدنه عملکرد آن در demo2.c
پیادهسازی شده است. از طریق پیوند، foo
در main()
در داخل demo1.c
به foo
در demo2.c
ارجاع داده شده است و به این صورت میتوان آن را در هر دو فایل فراخوانی کرد. این نمونهای از پیوند خارجی برای یک تابع است.
همچنین ببینید[ویرایش]
- رابط باینری برنامه (ABI)
- سازگاری C و C++
- پیوند دهنده (محاسبات)
- دستکاری نام
منابع[ویرایش]
رده:پیادهسازی زبان برنامهنویسی رده:کامپایلرها رده:زبان برنامهنویسی سی
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.