پیش پردازنده و ماکرو

پیش پردازنده ها و ماکروها در برنامه نویسی C

در این آموزش با پیش پردازنده ها (preprocessors) در زبان c آشنا خواهید شد و نحوه استفاده از #include، #define و کامپایل مشروط را به کمک مثال یاد خواهید گرفت.

پیش پردازنده ها (preprocessors) در زبان c پیش پردازنده C یک پیش پردازنده ماکرو است که برنامه را قبل از کامپایل تغییر می دهد. این تغییرات می تواند شامل فایل سرآیند، توسعه ماکرو و … باشد.

 


برنامه نویسی شبکه معماری کامپیوتر هوش مصنوعی و تجاری

توی این پک فوق العاده، صفرتاصد مبانی برنامه نویسی رو جوری یاد میگیری که تو هیچ کلاس آموزشی یا پک دیگه ای نه دیدی نه شنیدی! بدون هیچ کلاسی، با صفرتاصد مبانی برنامه نویسی اپلیکیشن بزن، پروژه محور یاد بگیر و حسابی پول در بیار! 


 

همه دستورالعمل های پیش پردازش با نماد # شروع می شوند. مثال،

#define PI 3.14

کاربردهای رایج پیش پردازنده ها در C

اضافه کردن فایل های سرآیند: #include

پیش پردازنده include# برای قرار دادن فایل های سرآیند یا هدر در برنامه استفاده می شود. مثال،

#include <stdio.h>

stdio.h یک فایل هدر است. پیش پردازنده #include محتویات فایل هدر stdio.h را جایگزین خط بالا می کند.

به همین دلیل قبل از استفاده از توابعی مانند ()scanf و ()printf باید از

#include <stdio.h>

استفاده کنید.

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

#include “my_header.h”

ماکروها با استفاده از #define

ماکرو قطعه کدی است که به آن یک اسم داده می شود. با استفاده از دستورالعمل پیش پردازنده define# می توانید یک ماکرو در زبان C تعریف کنید. مثال،

#define c 299792458 // سرعت نور

در اینجا وقتی از c در برنامه استفاده شود، مقدار ۲۹۹۷۹۲۴۵۸ جایگزین آن می شود.

مثال ۱: پیش پردازنده #define

#include <stdio.h>

#define PI 3.1415

int main()

{

float radius, area;

printf(“Enter the radius: “);

scanf(“%f”, &radius);

// می شود PI مقدار ۳٫۱۴۱۵ جایگزین

area = PI*radius*radius;

printf(“Area=%.2f”,area);

return 0;

}

ماکروهای شبیه به تابع

می توانید ماکروهایی را تعریف کنید که مانند فراخوانی تابع کار می کنند، به این ماکروها، ماکروهای تابعی گفته می شود. مثال،

#define circleArea(r) (3.1415*(r)*(r))

هر بار که برنامه با (circleArea(argument مواجه می شود، آن را با

(۳٫۱۴۱۵*(argument)*(argument))

جایگزین می کند.

فرض کنید عدد ۵ به عنوان آرگومان به تابع ارسال می شود،

circleArea(5) (3.1415*5*5)

مثال ۲: استفاده از پیش پردازنده define#

#include <stdio.h>

#define PI 3.1415

#define circleArea(r) (PI*r*r)

int main() {

float radius, area;

printf(“Enter the radius: “);

scanf(“%f”, &radius);

area = circleArea(radius);

printf(“Area = %.2f”, area);

return 0;

}

کامپایل مشروط

در برنامه نویسی C می توانید به پیش پردازنده دستور دهید که آیا یک بلاک کد در برنامه درج شود یا خیر. برای این کار از دستورالعمل های شرطی استفاده کرد.

شبیه به دستور if با یک تفاوت بزرگ است، دستور if در زمان اجرای برنامه ارزیابی می کند که آیا یک قطعه کد اجرا شود یا خیر، در حالی که شرط های پیش پردازنده برای قرار دادن یا پرش از یک بلوک کد، قبل از اجرای برنامه استفاده می شوند.

موارد استفاده کامپایل مشروط

  • براساس دستگاه یا سیستم عامل از کد های مختلف استفاده می شود.
  • فایل منبع یکسان در دو برنامه مختلف کامپایل می شود.
  • حذف کد خاصی از برنامه اما به عنوان یک مرجع برای اهداف بعدی نگه داشته می شود.

پیش پردازنده های شرطی

برای کامپایل مشروط از دستورالعمل های پیش پردازنده شرطی ifdef، #if،#defined ، #else#  و  elseif# استفاده می شود.

ifdef#

#ifdef MACRO

// کدهای شرطی

#endif

در اینجا کدهای شرطی فقط در صورتی که MACRO (یک ماکرو است) تعریف شده باشد، در برنامه گنجانده و کامپایل می شوند.

#if،#elif و #else

#if expression

// کدهای شرطی

#endif

expression می تواند عدد صحیح، کاراکتر، عبارت حسابی ماکرو و … باشد.

کدهای شرطی زمانی در برنامه قرار داده می شوند که مقدار expression، مقداری غیر صفر باشد.

می توانید دستور اختیاری #else را همراه با دستور #if استفاده کنید.

#if expression

// صفر نباشدexpression کدهای شرطی اگر

#else

// صفر باشدexpression کدهای شرطی اگر

#endif

علاوه بر این می توانید با استفاده از elif#، شرط های تودرتو به if…#else# اضافه کنید.

#if expression

// صفر نباشد expression کدهای شرطی اگر

#elif expression1

// صفر نباشد expression1 کدهای شرطی۱ اگر

#elif expression2

// صفر نباشد expression2 کدهای شرطی۲ اگر

#else

// صفر باشند هاexpression اگر همه

#endif

defined#

از عملگر خاص defined# برای بررسی اینکه آیا یک ماکرو خاص تعریف شده یا نشده استفاده می شود، اغلب همراه با دستور #if  می آید.

#if defined BUFFER_SIZE && BUFFER_SIZE >= 2048

// کدها

ماکروهای از پیش تعریف شده

در جدول زیر چند ماکرو از پیش تعریف شده در برنامه نویسی C معرفی شده است:

مقدار ماکرو
یک رشته حاوی تاریخ فعلی است. __DATE__
یک رشته حاوی نام فایل است. __FILE__
یک عدد صحیح که شماره خط فعلی را نشان می دهد. __LINE__
اگر از استاندارد ANSI در C پیروی کند آنگاه مقدار آن یک عدد صحیح غیر صفر است __STDC__
یک رشته حاوی زمان فعلی است. __TIME__

مثال ۳: دریافت زمان فعلی با استفاده از __TIME__

برنامه زیر با استفاده از ماکرو __TIME__ زمان فعلی سیستم را دریافت می کند.

#include <stdio.h>

int main()

{

printf(“Current time: %s”,__TIME__);

}

خروجی

Current time: 19:54:39

تفاوت پک های حرفه ای ما با آموزشهای رایگان: بطور خلاصه از زمین تا آسمان! 1-پکها، جدیدترین نسخه نرم افزارها را آموزش می دهند با قابلیت های بسیار بیشتر. 2-پکها توسط متخصص آن نرم افزار، به صورت کاملا پروژه محور و با حل چالش هایی که در مسیر کار عملی و حرفه ای با آن روبرو می شوید تهیه شده اند و بعد از استفاده، کاملا برای بازار کار آماده اید! 3- متد این پکها کاملا کار شده و تا ماهها، در ذهن تان ماندگارند و یادگیری بسیار سریعتر و کاملتری خواهید داشت. آموزشهای رایگان فقط دستورات نرم افزارها را (آنهم ناقص) بیان می کنند و تازه برای ورود به بازار باید ماهها تجربه عملی هم کسب کنید !!

turned_in,

چرب زبان

با این اپلیکیشن ساده، هر زبانی رو فقط با 5 دقیقه در روز، توی 80 روز مثل بلبل حرف بزن! بهترین متد روز، تقویت حافظه، آموزش تصویری. یادگیری زبان کلید یادگیری هر مهارتی در قرن 21 !


حتما بخوانید!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست