چگونگی ربط دادن header فایل در ++C به source file

  • شروع کننده موضوع fzgm
  • تاریخ شروع
وضعیت
موضوع بسته شده است.
  • شروع کننده موضوع
  • #1

fzgm

کاربر فوق‌حرفه‌ای
ارسال‌ها
782
امتیاز
82
نام مرکز سمپاد
فرزانگان 1 تهران
شهر
تهران
مدال المپیاد
ریاضی،کامپیوتر(کوتاه)،ادبیات،شیمی(تنوع؟!)
دانشگاه
دانشگاه تهران
رشته دانشگاه
علوم مهندسی
سلام
عنوان یکم گیج کنننده باید باشه چون خودمم دقیقا نمیدونستم تو یه جمله چطوری میشه گفت! :D

سوال من اینه که
شما برای یه برنامه چندتا header file (.h ) دارین و چندتا سورس
بعد کلی توابع هم دارین
(صورت سوال حل n معادله n مجهوله...یه هدر و یه سورس برای عملیات ماتریسی ... یه هدر و سورس برای حل مسپله به کمک اون عملیات ها و یه هد وسورس هم برای ورودی و خروجی میخواد )
بعد من سوالم اینه که این توابع کجا باید اعلان بشن؟کجا باید تعریف بشن؟چون تو چندتا فایل که با هم کامپایل میکنیم فقط یه جا باید تعریف کنیم یه تابع رو اون کجا باشه و چون اینا بهم ربط دارن وقتی بخاین از اون توی یه جای دیگه استفاده کنی چه میکنین؟!
اگه صورت سوال ناواضح بگین که بیشتر توضیح بدم :)
 

The Smith

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,061
امتیاز
3,545
نام مرکز سمپاد
سلام ایران‌زمین
پاسخ : چگونگی ربط دادن header فایل در ++C به source file

بیشتر توضیح بده لطفا :-\
 

SR

کاربر فوق‌حرفه‌ای
ارسال‌ها
604
امتیاز
1,158
نام مرکز سمپاد
شهید اژه ای 1
شهر
اصفهان
سال فارغ التحصیلی
00
مدال المپیاد
درست نخوندم به جایی نرسیدم
رشته دانشگاه
مهندسی برق
پاسخ : چگونگی ربط دادن header فایل در ++C به source file

فکر کنم هر چی define و ... هست تو هدر تعریف میکنید+تعریف تابع ها(فقط در حد اسمشون)
تو سورس مربوط به هدر خود هدر رو include میکنید و بعد توابع رو مینویسید
فکر کنم جوابتون همین باشه برای نوشتن کتابخونه درسته؟
 

sjazayeri

کاربر حرفه‌ای
ارسال‌ها
472
امتیاز
590
نام مرکز سمپاد
شهید دستغیب ۱
شهر
شیراز
مدال المپیاد
برنز کامپیوتر
پاسخ : چگونگی ربط دادن header فایل در ++C به source file

بذارین به نحوه ساخته شدن فایل اجرایی نگاه کنیم:
اول کامپایلر تمام فایل های .c رو کامپایل میکنه و به ازای هرکدوم یه فایل object میسازه, بعد linker این فایل های object رو ادغام میکنه و فایل های اجرایی رو میسازه, دقت کنین که موقع کامپایل اگر یک فایل از تابعfoo استفاده کنه ولی تعریف تابع(نه پروتوتایپ) توی اون فایل نباشه اروری نمیده چون این وظیفه linker هست. linker وقتی به یک تابع برمیخوره اگر توی هریکی از فایل های .c این تابع تعریف شده باشه توی فایل های دیگه هم از این تعریف استفاده میکنه و اگر وجود نداشته باشه ارور میده. پس اگر تابع یک تابع مثلا foo(int, int) رو توی فایل bar.c داشته باشیم برای استفاده از اون توی بقیه فایل ها کافیه که پروتوتاپش رو توی اون فایل داشته باشیم, که برای راحتی پروتوتایپ توابع مربوط به هر فایل رو توی یک هدر همنام با اون میذارن تا هرجا خواستن از توابعش استفاده کنن فقط اون هدر رو include کنن.
مثلا:

foo.h:
کد:
int foo(int, int);
int m2(int);

foo.cpp
کد:
int foo(int a, int b)
{
    return a+b;
}

int m2(int a)
{
    return 2*a;
}

bar.cpp:
کد:
#include "foo.h"

int bar(int x, y)
{
    return m2(x)*foo(x, y);
}

 
  • لایک
امتیازات: ffff

s.pegasus

کاربر فوق‌حرفه‌ای
ارسال‌ها
825
امتیاز
3,937
نام مرکز سمپاد
علامه حلی ۲
شهر
تـهـران
دانشگاه
تهران غرب
رشته دانشگاه
معماری
پاسخ : چگونگی ربط دادن header فایل در ++C به source file

به نقل از فاطمه زهرا قرائی منش :
سلام
عنوان یکم گیج کنننده باید باشه چون خودمم دقیقا نمیدونستم تو یه جمله چطوری میشه گفت! :D

سوال من اینه که
شما برای یه برنامه چندتا header file (.h ) دارین و چندتا سورس
بعد کلی توابع هم دارین
(صورت سوال حل n معادله n مجهوله...یه هدر و یه سورس برای عملیات ماتریسی ... یه هدر و سورس برای حل مسپله به کمک اون عملیات ها و یه هد وسورس هم برای ورودی و خروجی میخواد )
بعد من سوالم اینه که این توابع کجا باید اعلان بشن؟کجا باید تعریف بشن؟چون تو چندتا فایل که با هم کامپایل میکنیم فقط یه جا باید تعریف کنیم یه تابع رو اون کجا باشه و چون اینا بهم ربط دارن وقتی بخاین از اون توی یه جای دیگه استفاده کنی چه میکنین؟!
اگه صورت سوال ناواضح بگین که بیشتر توضیح بدم :)
شما اول میری توابع رو تو فایل های مربوطه می نویسی
بعد تو فایل ورودی و خروجی هدر اون فایل های بالا رو اینکلود می کنی
اونوقت می تونی ازشون استفاده کنی
 
وضعیت
موضوع بسته شده است.
بالا