مهندسی طور

روزنوشت های یه مهندس تازه کار

مهندسی طور

روزنوشت های یه مهندس تازه کار

مهندسی طور

تا حالا به این فکر کردین که تو یه سیستم کامپیوتری GPU چقدر کارآمد و مهمه ولی به اندازه CPU شناخته شده نیست.یه جورایی همون "مجهولون فی الارض معروفون فی السماء" که میگن!
یه حسی بهم میگه کاش بتونم مثه GPU باشم :)

هنر ایجاد هدر فایل!

چهارشنبه, ۱۰ ارديبهشت ۱۳۹۹، ۱۱:۴۹ ب.ظ

خب در ادامه مطالب قبلی میخوایم تو این قسمت ببینیم چطور میشه یه هدر فایل برای پروژه مون ایجاد کنیم و اینکه اصولا تو نوشتن یه هدر فایل رعایت چه نکاتی اهمیت پیدا میکنه.خب اولین موضوعی که لازمه بهش بپردازیم اینه که هدفمون از این کار چیه؟

تو برنامه نویسی اصولی معمولا رسم بر این هستش که تا جایی که ممکنه کدهایی رو که مینویسیم به نحوی باشه که بتونیم تو پروژه های دیگه و یا برای پلتفرم های دیگه هم استفاده شون کنیم یا به عبارت بهتر Portable باشن به همین خاطر هم مهندسای نرم افزار به سمت برنامه نویسی ماژولار حرکت کردند.یکی از ارکان اصلی برنامه نویسی ماژولار هم هدرفایل ها هستند که در شامل اطلاعاتی هستند که در فایل اصلی پروژه آورده نمیشن و تنها به include کردن همین هدر فایل بسنده میکنن.

ساختار یک هدر فایل رو به صورت زیر معمولا مینویسن :

#ifndef __TEST_H__

#define __TEST_H__

...

#endif /*__TEST_H__*/

اولین خط این کد مربوط به موضوعی هست به اسم "include guard" که باعث میشه اگه به اشتباه این هدر فایل رو در بیش از یک جا تعریف کنیم خطای کامپایل ازمون نگیره و تنها یک مورد رو به عنوان بدنه هدر فایل انتخاب کنه و بقیه رو نادیده بگیره.البته برای این موضوع روش دیگه ای هم هست به این صورت که کافیه در ابتدای این هدر فایل عبارت pragma once# رو قرار بدیم.البته این روش مشکلی که داره عدم پشتیبانی برخی از کامپایلرها از Pragma هستش که خب باعث میشه کدمون قابلیت حمل پذیری(Portable) رو از دست بده.

برای نام گذاری هم تو ساختاری که معرفی شد معمولا به این صورت عمل میکنن که اسم فایل رو با حروف بزرگ قرار میدن.مثلا تو همین مثال احتمالا اسم هدرفایل که این کد رو داخلش داره test.h بوده!

برای تعریف متغیرها از هدرفایل استفاده نمیکنیم چون به ازای هربار Include شدنش این متغیرها هم تعریف میشن که ممکنه باعث از دست رفتن بخشی از حافظه بشه که خب تو سیستم های امبدد برامون اهمیت زیادی داره!

لازمه تو هدر فایل برای افزایش خوانایی کامنت هایی رو برای توابع قرار بدیم که توضیحاتی راجع به عملکرد اون تابع،ورودی هاش و خروجی های تولیدیش رو داشته باشه.تو تصویر زیر میتونید نمونه از این نوع کامنت رو ببینید :

به عنوان آخرین نکته هم اینکه ما چون تو سیستم های امبدد به علت محدودیت های حافظه ای موجود نیاز داریم تا بهینه ترین و کم حجم ترین کدها رو بنویسیم لازمه با انواع کتابخونه های از پیش کامپایل شده که میتونن به پروژه مون اضافه بشن هم اطلاعاتی کسب کنیم.اولین نوع از کتابخونه ها اونایی هستن که بهشون میگن static و به صورت مستقیم به فایل اجرایی ما لینک میشن و برروی پلتفرم قرار میگیرن.نوع دوم که بیشتر برای پردازنده هایی با قابلیت اجرای سیستم عامل استفاده میشن Shared library ها هستند که به صورت دینامیک و در run time برنامه اضافه میشن.این کتابخونه ها به صورت پیشفرض روی سخت افزار برخی از پلتفرم ها پیاده سازی شدند.خب طبیعیه نوع دوم کتابخونه ها باعث میشه حجم فایل اجرایی کاهش چشمگیری پیدا کنه که خب یه مزیت محسوب میشه اگرچه نیاز به یه سیستم عامل داریم که خب خودش دردسرهای خاص خودشو داره :/

 

 

 

نظرات (۰)

هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی