نمایش نتایج 1 تا 7 از 7

نام تاپیک: تفاوت namespace , lib و Header File

  1. #1

    Red face تفاوت namespace , lib و Header File

    یک پرسش خیلی ابتدایی دارم ولی برای من خیلی مهمه
    من چند روزیه که برنامه نویسی با سی پلاس پلاس توی محیط گنو رو شروع کردم و یه سوال برام پیش اومده
    توی C#‎ فقط namespaceها وجود داشتن و بصورت سلسله مرتبی و تودرتو بودن ولی توی سی پلاس علاوه بر namespaceها فایلهای سرآیند و کتابخانه ها هم هستند آیا وجود فایلهای سرآیند تنها برای حفظ سازگاری با سی هستش و یا اینکه یکی از اجزای جدایی ناپذیر سی پلاس و اینکه آیا فضاهای نام و کتابخانه ها یکی هستند

  2. #2

    نقل قول: تفاوت namespace , lib و Header File

    نقل قول نوشته شده توسط MustafaJF مشاهده تاپیک
    یک پرسش خیلی ابتدایی دارم ولی برای من خیلی مهمه من چند روزیه که برنامه نویسی با سی پلاس پلاس توی محیط گنو رو شروع کردم و یه سوال برام پیش اومده توی C#‎‎‎ فقط namespaceها وجود داشتن و بصورت سلسله مرتبی و تودرتو بودن ولی توی سی پلاس علاوه بر namespaceها فایلهای سرآیند و کتابخانه ها هم هستند آیا وجود فایلهای سرآیند تنها برای حفظ سازگاری با سی هستش و یا اینکه یکی از اجزای جدایی ناپذیر سی پلاس و اینکه آیا فضاهای نام و کتابخانه ها یکی هستند
    سلام.
    به برنامه نویس خوش آمدید. :) لطفا قبل از شروع فعالیت در سایت، از مطالعه قوانین سایت اطمینان حاصل کنید.

    اما در مورد سوالتون، من قبلا Namespace رو اینجا تعریف کرده ام. بنابراین Header File ها و Library ها رو براتون تعریف می کنم. اما قبل از تعریف header file ها، اجازه بدید تا ابتدا با معنای declare کردن آشنا بشیم. برای فراخوانی یک تابع، ابتدا باید Signature اونو در Source File خودمون قرار بدیم. اگر قرار باشه یک تابع از N جا Call بشه، اونوقت این تعریف باید در N نقطه صورت بگیره، که پر واضحه کاری بیهوده و وقت گیر هستش. پس، میاییم این تعریف رو در فایلی به نام Header File قرار میدیم و به Compiler میگیم که تعاریف موجود در فلان Header File رو در این Source File نیاز دارم (این گفتن توسط include انجام میشه و به این عمل میگن declare کردن). وقتی اینکار انجام بشه، دیگه Compiler مات و مبهوت نمیمونه که Signature فلان تابعی که فراخوانی شده چی هستش، چون شما اونو قبلا Declare کرده اید.

    اما حالا پیاده سازی همون تابع، میتونه در یک Source File دیگه باشه که خود این Source File میتونه در یک Library جداگانه قرار داشته باشه. Library چیه؟ پیاده سازی توابعی است که مایلید اونها رو از چند برنامه فراخوانی کنید. فرض کنید، برنامه ای نوشته ایم که توانایی محاسبه عملیات شگفت انگیری رو داره و به یکباره دنیا متوجه کار برجسته ای که انجام داده ایم میشه و همه درخواست میکنن که پیاده سازی این توابع شگفت انگیز رو در اختیار اونها هم قرار بدیم تا اونها هم بخشی از مشکلات عالم رو با فراخوانی توابع نوشته شده توسط ما، حل کنند.

    در این لحظه، آستین ها رو به سرعت بالا میزنیم و پیاده سازی توابعی که نوشته بودیم رو به یک فایل مجزا منتقل می کنیم (به خروجی تولید شده از این پیاده سازی ها که عموما فایل با خروجی dll یا lib هستش، Library میگیم). بعدش، برای اینکه برنامه نویس ها سردرگم نشن، Header File ای هم میسازیم و Signature توابع موجود در اون DLL/LIB رو در اون قرار میدیم. حالا، میتونیم این DLL/LIB رو بهمراه اون Header File به دست علاقمندان بدیم تا اونها،

    • Header File رو در برنامه اشون include کنن،
    • DLL/LIB رو هم به برنامه اشون Link کنن (که اگر نکنن، Linker با خطا مواجه میشه و ازمون میپرسه "پس پیاده سازی توابعی که declare کرده بودی کو؟")

    و توابع شگفت انگیز ما رو Call کنن و ازش لذت ببرن. به این فایل DLL/LIB میگیم Library. با اینکار، ما Library (یا کتابخانه ای) برای انجام عملیات شگفت انگیز طراحی کردیم، حالا می تونیم اونو N بار در N پروژه بدون دست کاری یا Compile استفاده کنیم. :)

    موفق باشید.

  3. #3

    نقل قول: تفاوت namespace , lib و Header File

    ممنون از راهنماییتون فقط درباره فضاهای نام یه سوال برام پیش اومده
    namespaceها یعنی فقط برای دسته بندی دستورات بکار میرن
    و این دستورات فقط دستورات سی پلاس هستند که معمولا وابسته به پلتفورم مورد استفاده می باشند (گنو باید std فراخوانی بشه و در ویندوز نه)
    و یا اینکه نه namespace چیزی فراتر از دسته بندی دستوراته

  4. #4

    نقل قول: تفاوت namespace , lib و Header File

    نقل قول نوشته شده توسط mehdi.mousavi مشاهده تاپیک
    سلام.
    به برنامه نویس خوش آمدید. :) لطفا قبل از شروع فعالیت در سایت، از مطالعه قوانین سایت اطمینان حاصل کنید.

    اما در مورد سوالتون، من قبلا Namespace رو اینجا تعریف کرده ام. بنابراین Header File ها و Library ها رو براتون تعریف می کنم. اما قبل از تعریف header file ها، اجازه بدید تا ابتدا با معنای declare کردن آشنا بشیم. برای فراخوانی یک تابع، ابتدا باید Signature اونو در Source File خودمون قرار بدیم. اگر قرار باشه یک تابع از N جا Call بشه، اونوقت این تعریف باید در N نقطه صورت بگیره، که پر واضحه کاری بیهوده و وقت گیر هستش. پس، میاییم این تعریف رو در فایلی به نام Header File قرار میدیم و به Compiler میگیم که تعاریف موجود در فلان Header File رو در این Source File نیاز دارم (این گفتن توسط include انجام میشه و به این عمل میگن declare کردن). وقتی اینکار انجام بشه، دیگه Compiler مات و مبهوت نمیمونه که Signature فلان تابعی که فراخوانی شده چی هستش، چون شما اونو قبلا Declare کرده اید.

    اما حالا پیاده سازی همون تابع، میتونه در یک Source File دیگه باشه که خود این Source File میتونه در یک Library جداگانه قرار داشته باشه. Library چیه؟ پیاده سازی توابعی است که مایلید اونها رو از چند برنامه فراخوانی کنید. فرض کنید، برنامه ای نوشته ایم که توانایی محاسبه عملیات شگفت انگیری رو داره و به یکباره دنیا متوجه کار برجسته ای که انجام داده ایم میشه و همه درخواست میکنن که پیاده سازی این توابع شگفت انگیز رو در اختیار اونها هم قرار بدیم تا اونها هم بخشی از مشکلات عالم رو با فراخوانی توابع نوشته شده توسط ما، حل کنند.

    در این لحظه، آستین ها رو به سرعت بالا میزنیم و پیاده سازی توابعی که نوشته بودیم رو به یک فایل مجزا منتقل می کنیم (به خروجی تولید شده از این پیاده سازی ها که عموما فایل با خروجی dll یا lib هستش، Library میگیم). بعدش، برای اینکه برنامه نویس ها سردرگم نشن، Header File ای هم میسازیم و Signature توابع موجود در اون DLL/LIB رو در اون قرار میدیم. حالا، میتونیم این DLL/LIB رو بهمراه اون Header File به دست علاقمندان بدیم تا اونها،


    • Header File رو در برنامه اشون include کنن،
    • DLL/LIB رو هم به برنامه اشون Link کنن (که اگر نکنن، Linker با خطا مواجه میشه و ازمون میپرسه "پس پیاده سازی توابعی که declare کرده بودی کو؟")


    و توابع شگفت انگیز ما رو Call کنن و ازش لذت ببرن. به این فایل DLL/LIB میگیم Library. با اینکار، ما Library (یا کتابخانه ای) برای انجام عملیات شگفت انگیز طراحی کردیم، حالا می تونیم اونو N بار در N پروژه بدون دست کاری یا Compile استفاده کنیم. :)

    موفق باشید.

    ممنون از راهنماییتون
    در مورد lib سوالی که پیش میاد اینه که خوب ما توی اون یه سری توابع برای انجام برخی کارها تعریف میکنیم خوب چه کاریه وقتی میتونیم توی هدر فایل تعریف کنیم؟
    من هنوز نقش lib رو متوجه نشدم

  5. #5

    نقل قول: تفاوت namespace , lib و Header File

    نقل قول نوشته شده توسط one hacker alone مشاهده تاپیک
    ممنون از راهنماییتون
    در مورد lib سوالی که پیش میاد اینه که خوب ما توی اون یه سری توابع برای انجام برخی کارها تعریف میکنیم خوب چه کاریه وقتی میتونیم توی هدر فایل تعریف کنیم؟
    من هنوز نقش lib رو متوجه نشدم
    با سلام
    من هم هنوز فرق کتابخانه با فایل هدر رو خوب متوجه نشدم ؟
    مگه نمیشه همه این کارایی که گفته شد توی فایل هدر انجام بشه ؟ پس کار این کتابخانه این وسط چیه ؟

  6. #6
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    مرداد 1391
    سن
    29
    پست
    596

    نقل قول: تفاوت namespace , lib و Header File

    خوب توضیح دادن دیگه فقط اسم اون فانکشن ها و نحوه وارد کردن ورودی بصورت طبقه بندی شده داخل فایل هدره ولی کد اصلیشون که چجوری عمل کنن داخل همون کتابخانست
    که خوب این جدا کردن باعث میشه راحت تر یک برنامه نویس بفهمه داخل هر کتابخانه چه عملکردهایی است مثلا اگر خود کتابخانه1میلیون خط باشه هدرش 1000 خطه تو 1000 خط گشتن و کسب کردن اطلاعات درباره یک فانکشن خیلی راحت تره دیگه نه؟
    مثلا این هدر studio.h رو نگاه کن شما اگر بخواینحوه وارد کردن متن رو بفهمی کافیه داخلش سیرچ کنی Input! بعد خیلی راحت میتونی همه فانکشن ها برای ورود متن رو به همراه نحوه وارد کردنشون ببینی!
    http://omidshaman.persiangig.com/standard%20headers.h

  7. #7
    کاربر دائمی آواتار Ananas
    تاریخ عضویت
    آبان 1390
    محل زندگی
    طول 50 و عرض 34 درجه
    سن
    36
    پست
    894

    نقل قول: تفاوت namespace , lib و Header File

    بله یک دلیل مهمش هم اینه که فرمول بکار رفته در این (به قول آفای موسوی:) توابع شگفت انگیزتون به دست افراد نمی افته و افراد فقط می تونن با صدا زدن توابعی که شما تو هدر فایل نوشتین از این محاسبات شگفت انگیز شما استفاده کنن و نمیتونن اون رو به دلخواه خودشون تغییر بدن و یا به شکل دیگه ای استفاده (و یا به نفع خودشون سوء استفاده) کنن.

تاپیک های مشابه

  1. header files in c
    نوشته شده توسط shahramfg در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 1
    آخرین پست: جمعه 19 خرداد 1385, 16:49 عصر
  2. header files in c
    نوشته شده توسط shahramfg در بخش برنامه نویسی با Borland C++‎ Builder
    پاسخ: 0
    آخرین پست: جمعه 19 خرداد 1385, 16:18 عصر
  3. نحوه بدست اوردن توابع درون Header file ؟
    نوشته شده توسط saeedIRHA در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 8
    آخرین پست: پنج شنبه 04 خرداد 1385, 07:18 صبح
  4. تقاضای Header File
    نوشته شده توسط Developer Programmer در بخش توسعه‌ی لینوکس و نرم افزارهای آزاد
    پاسخ: 12
    آخرین پست: چهارشنبه 19 بهمن 1384, 15:20 عصر
  5. تعریف فایلهای کتابخانه ای در c (header file)
    نوشته شده توسط tornado_uni در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 0
    آخرین پست: دوشنبه 09 آبان 1384, 22:42 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •