تبلیغات


معرفی پیش پردازنده و دستورات آن در کامپایلر سی پلاس پلاس

پیش پردازنده و دستورات آن در سی پلاس پلاس [بخش دوم]

اشتراک گذاری
Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestPrint this pageEmail this to someone

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

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

دستورات شرطی (ifdef , #ifndef , #if , #endif , #else , #elif#)

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

ifdef# تنها در صورتی اجازه کامپایل شدن کدهای ناحیه درونش را می دهد که ماکرویی که به عنوان پارامتر به آن داده می شود تعریف شده باشد (بدون توجه به مقدار آن، تنها کافی ست که ماکرو از قبل مقداری داشته باشد). مثال:

در مثال بالا، خط  ;[int table[TABLE_SIZE تنها در صورتی کامپایل می شود که در خطوط بالاتر، مقدار  TABLE_SIZE با دستور  define# مشخص شده باشد. در غیر این صورت، این قسمت از کد در هنگام کامپایل کد نادیده گرفته می شود.

ifndef# درست در نقطه مقابل  ifdef قرار دارد. کدی که در میان دستورات  ifndef# و  endif# قرار می گیرد، تنها در صورتی بررسی و کامپایل می شود که ماکروی ورودی  ifndef# از قبل تعریف نشده باشد. برای مثال:

در مثال بالا، اگر زمانی که پیش پردازنده به این قطعه کد می رسد، هنور برای  TABLE_SIZE مقداری تعریف نشده باشد، مقدار آن توسط دستور  define# به مقدار ۱۰۰ تعریف می شود. در غیر این صورت،  TABLE_SIZE مقدار قبلی خود را حفظ می کند و دستور  define TABLE_SIZE 100 اجرا نخواهد شد.

به دلیل عملکرد منطقی آشنای دستورات if و else در دستورالعمل های پیش پردازنده ای، برای نشان دادن عملکرد آن ها تنها به ارائه مثال زیر بسند می کنیم:

ماکروهای از قبل تعریف شده

ماکروهای زیر همیشه به طور خودکار توسط واحد پیش پردازنده تعریف شده اند و می توان مستقیماً آن ها را مورد استفاده قرار داد (نام این ماکروها با دو کاراکتر آندرلاین _ شروع و تمام می شود).

ماکروی __LINE__ :

عدد صحیحی که شماره خط جاری در فایل کد را ارائه می دهد.

ماکروی __FILE__ :

مقدار رشته ای که نام فایل کد در حال پردازش و کامپایل را ارائه می دهد.

ماکروی __DATE__ :

مقدار رشته ای که تاریخ آغاز عملیات پردازش و کامپایل را ارائه می دهد (فرمت: “Mmm dd yyyy”).

ماکروی __TIME__ :

مقدار رشته ای که زمان آغاز عملیات پردازش و کامپایل را ارائه می دهد (فرمت: “hh:mm:ss”).

 

برای ماکروهای بالا این مثال را در نظر بگیرید:

خروجی می تواند به شکل زیر باشد:

 

ما در اوپن مایند از پیشنهاد و یا سوالاتی که شما خوانندگان عزیز درباره مطالب مطرح می کنید، استقبال می کنیم.
پس قبل از ترک این صفحه، برای ما درباره این مطلب نظر بگذارید و ما را خوشحال کنید! 🙂


تبلیغات:

۲ دیدگاه

  • سلام…
    بسیار عالی….قلم بسیار خوبی دارید…
    اما حیف که خیلی کم مطلب میذارید….
    🙁

    • حامد آهنگری

      سلام
      ممنون از لطف شما 🙂
      اتفاقاً این روزها در صدد هستیم که زمان بندی و تعداد مطالب منتشر شده در اوپن مایند رو بهتر و بیشتر کنیم. بازم ممنون

نظر خود را بنویسید.

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