از نرم افزار تا سخت افزار – قسمت سوم – هدر فایل (Header file)

blog
۱۳۹۹-۰۳-۰۸
2 دقیقه

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

 

ساختار هدر فایل

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

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

 

باید ها و نباید ها!

برای تعریف متغیرها از هدرفایل استفاده نمی‌کنیم چون به ازای هربار Include شدنش این متغیرها هم تعریف میشن که ممکنه باعث از دست رفتن بخشی از حافظه بشه که خب تو سیستم‌های امبدد برامون اهمیت زیادی داره!
لازمه تو هدر فایل برای افزایش خوانایی کامنت هایی رو برای توابع قرار بدیم که توضیحاتی راجع به عملکرد اون تابع، ورودی هاش و خروجی‌های تولیدیش رو داشته باشه. تو تصویر زیر میتونید نمونه از این نوع کامنت رو ببینید:

C comment

 

نکته آخر

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

در قسمت چهارم، به آخرین مراحل آماده‌سازی کد برای پیاده‌سازی روی سخت‌افزار می‌رسیم.

اطلاعات
6
0
لینک و اشتراک
profile

سعید حقیقی پور

متخصص الکترونیک

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

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

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

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

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

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند.
family

دیدگاه ها

profile
حسین گفت :
۱۳۹۹-۰۳-۱۵ ۰۰:۱۴

سلام
ممنون خیلی ساده و روان بود مرسی
اگه میشه این سبک اموزش رو بیشتر کنید دستتون درد نکنه

profile
اصغر فرهادی گفت :
۱۳۹۹-۰۳-۱۰ ۱۲:۲۸

ممنون بابت مطلب.
لطفا بازم آموزش های مرتبط با هک و نفوذ هاتون رو بیشتر کنید یکی از بهترین مقاله هایی که خوندم هک ماینر عملیات غیر ممکن شما بود .

profile
Sisoog Os گفت :
۱۳۹۹-۰۳-۱۲ ۰۱:۵۵

سلام انشاله سعی خواهیم کرد

profile
حسین گفت :
۱۳۹۹-۰۳-۰۸ ۲۲:۱۹

سلام .
سپاس خسته نباشید.
مطلب جالبی بود .
در مورد تعریف متغیر در هدر فایلها :
مگر اون گارد از تعریف مجدد جلوگیری نمیکنه ؟!!!
تا اونجایی که میدونم اون دستورهای داخل include guard در صورت تکراری بودن اصلا کمپایل نمیشه .
میشه بیشتر توضیح بدید؟

profile
سعید حقیقی پور گفت :
۱۳۹۹-۰۳-۰۹ ۱۲:۵۸

سلام
ممنون از لطفتون
بله وظیفه اصلی این گاردها همین هستش.در واقع همونطور که تو مقاله هم اشاره کردم در صورتی که براثر اشتباه برنامه نویس یا به هر دلیلی یک هدرفایل تو یه پروژه بیش از یکبار تعریف بشه برنامه یکی از این دو تعریف رو انتخاب میکنه و بقیه رو نادیده میگیره.در واقع اون دستور ifndef# یعنی اگر “تعریف نشده بود…”

profile
حسین گفت :
۱۳۹۹-۰۳-۱۰ ۱۶:۳۵

پس چه مشکلی برای تعریف متغیر های عمومی داخل فایل هدر هست ؟

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله