PDA

View Full Version : سوال: ماژول های یک برنامه بزرگ



H_afkhami60
دوشنبه 24 آذر 1393, 13:04 عصر
بسم الله الرحمن الرحیم

سلام
در حال مطالعه زبان شیرین سی هستم. رسیدم به این مطلب:
"زبان C ، این امکان را فراهم می کند که قطعات (ماژول های) یک برنامه بزرگ به صورت جدا جدا کامپایل شده و به یکدیگر پیوند داده شوند."
سوالاتی که برای بنده پیش آمده است این است که:
1- منظور از ماژول های یک برنامه چیست؟ چیزی که در ذهن بنده هست اینه که هر ماژول یک برنامه هست که بعد از کامپایل تبدیل به یک فایل exe میشه و بعد می توان این exe ها را با هم پیوند داد.
2- ماژول های یک برنامه را چگونه به یکدیگر پیوند دهیم؟
از بزرگوارانی که می توانند پاسخ این سوالها را بدهند، خواهش می کنم توضیح دهند. با تشکر

rahnema1
دوشنبه 24 آذر 1393, 18:13 عصر
سلام

در زبان c اصطلاح ماژول استفاده نمیشه بلکه ما translation unit یا واحد ترجمه داریم
متن برنامه در واحدهایی به نام فایل source یا فایل منبع قرار می گیره. کدهای کتابخانه استاندارد در فایلهای سرآیند یا header قرار می گیرند
یک واحد ترجمه عبارت است از یک فایل سورس به همراه کدهایی ( سورس یا هدر) که توسط include به اون افزوده میشن
واحدهای ترجمه را می توان به صورت جداگانه ترجمه و سپس ترکیب یا link کرد یا تشکیل برنامه قابل اجرا درسیتم را بدهد
فرایند تبدیل کد به دستورالعملهای قابل اجرا توسط ماشین «ترجمه» می گن
به عنوان مثال با کامپایلر gcc می توان فایلهای منبع با پسوند c. را به صورت فایلهای با پسوند o. ترجمه کرد. بعد میشه این فایلهای o را با هم لینک کرد تا فایل اجرایی exe در ویندوز تولید بشه
به عنوان مثال شما دو تا فایل به نام main.c یا func.c را درست کنید با محتوای زیر

//func.c
int pow2(int x)
{
return x * x;
}


//main.c
#include <stdio.h>
int pow2(int);
int main()
{
int a = pow2(5);
printf("%d", a);
}


حالا میتونید به ترتیب این دستورات را اجرا کنید تا فایل obj یا o ایجاد بشه و با هم لینک کنید


gcc -c func.c
gcc -c main.c
gcc main.o func.o -o main.exe

یا اینکه همه را با هم در یک دستور:


gcc main.c func.c -o main.exe

حالا اگه از IDE هایی مثل ++visual c یا codeblocks استفاده می کنید این گزینه هارا در قسمت options قابل تنظیم هست