PDA

View Full Version : سوال: نحوه ضمیمه کردن هدرفایل شخصی به برنامه؟؟؟؟؟؟/



motherboard
یک شنبه 07 اردیبهشت 1393, 19:42 عصر
سلام خدمت همگی.می خواستم بدونم تابع هایی که خودمون می سازیم چه جوری تبدیل به هدر فایل کنیم و اون رو توسط راهنمای پیش پردازنده ضمیمه برنامه کنیم ؟ با تشکر.

one hacker alone
یک شنبه 07 اردیبهشت 1393, 21:02 عصر
سلام
توابعی که شما در برنامه استفاده میکردید همیشه یا قبل تابع main و یا بعد اون مینوشتید اینبار بیاد همون توابع رو تو یه فایل txt کپی کنیدو توابعی که در تابع های خودتون استفاده کردید مثل cout ننیز باید شناسایی بشن پس بعنوان مثال باید بالای همه تابع ها iostream رو ضمیمه کنید
در نهایت شما این فایل رو با پسوند .h در کنار پروژه یا در پوشه ی include کامپایلر قرار میدید و در پروژه اصلی include میکنید
پس مراحل شد


#include <iostream>
using namespace std;
print()
{
cout<<"test";
}

ذخیره با اسم myheaderfile.h
استفاده در پروژه اصلی

#include <iostream>
#include <myheaderfile.h>
using namespace std;
main()
{
print();
}


چند نکته
این شکل طراحی هدرفایل اصولی نیست و شما باید با استفاده از دستورات پیش پردازنده بهش بگید که اگه قبلا تعریف شده نیازی به تعریف مجدد نیست و....
اما در کل این جواب میده و مشکلی نداره من ساده ترین حالت رو در نظر گرفتم که بدونید چجوری بعدا خواستید بیشتر توضیح میدم
استفاده از پسوند .h قراردادی هست و میتونید نزارید (همونطور که خیلی از کامپایلرها برخی از فایل های سرایند رو بدون پسوند ذخیره میکنند مثل همین iostream)
میتونید تمامی فایل های سرایند در پروژه اصلی رو در هدرفایل خخودتون ضمیمه کنید و دیگه نیاز در ضمیمه پروژه اصلی نیست و تنها هدرفایل شما در پروژه اصلی ذکر بشه
فایل های سرایند یکی از تکنیک های مهندسی نرم افزار در نگهداری کدها هستن و به مدیریت پروژه های بزرگ بسیار کمک میکنند پس سعی کنید اصولی کارتون رو پیش ببرید
درپناه خدا

majid1605
یک شنبه 07 اردیبهشت 1393, 23:24 عصر
معمولا هدر فایل هایی که خودمون می نویسیم حالا با هر پسوندی رو معمولا تووی پوشه پروژه میریزیم برای همین نحوه اینکلود کردنشون هم فرق می کنه
#include "myheaderfile.h"
دلیلش رو هم می تونید سرچ کنید تا متوجه بشید
اما نکته ای که دوستمون گفتم که این طرز تعریف صحیح نیست حق با ایشون قبلش باید چک کنیم که قبلا به برنامه اینکلود نشده باشه

#ifndef MYHEADERFILE_H
#define MYHEADERFILE_H
#endif
حالا ممکنه بین این دستور شرطی چندتا دستور یا اینکلود دیگه هم باشه به این کار include guard گفته میشه