C# – دستورات پیش‌پردازش (Preprocessor Directives)

Preprocessor Directives (دستورات پیش‌پردازش) به کامپایلر دستور می‌دهند که اطلاعات را قبل از شروع واقعی کامپایل پردازش کند.

تمام دستورهای پیش‌پردازش با # (شارپ) آغاز می‌شوند و فقط کاراکترهای فاصله‌گذاری ممکن است قبل از دستور پیش‌پردازش در یک خط ظاهر شوند. دستورات پیش‌پردازش، عبارات نیستند، بنابراین با نقطه‌ویرگول ; (نقطه‌ویرگول) پایان نمی‌یابند.

کامپایلر C# یک پیش‌پردازشگر جداگانه ندارد؛ با این حال، دستورات به گونه‌ای پردازش می‌شوند که گویی یکی وجود دارد. در C#، دستورهای پیش‌پردازش برای کمک به “conditional compilation” (کامپایل شرطی) استفاده می‌شوند. برخلاف دستورات C و C++، آن‌ها برای ایجاد ماکروها استفاده نمی‌شوند. یک دستور پیش‌پردازش باید تنها دستور موجود در یک خط باشد.

دستورهای پیش‌پردازش در C#

جدول زیر دستورهای پیش‌پردازش موجود در C# را لیست می‌کند:

1 #define
2 #undef
3 #if
4 #else
5 #elif
6 #endif
7 #line
8 #error
9 #warning
10 #region
11 #endregion

Preprocessor Directive define (دستور پیش‌پردازش تعریف)

دستور پیش‌پردازش #define (تعریف) به ایجاد ثابت‌های نمادین کمک می‌کند.

#define (تعریف) به شما اجازه می‌دهد یک نماد را تعریف کنید به گونه‌ای که با استفاده از نماد به عنوان عبارت که به دستور #if (شرطی) ارسال می‌شود، عبارت به true (درست) ارزیابی می‌شود. نحو آن به صورت زیر است:

#define symbol

برنامه زیر این را نشان می‌دهد:

#define PI 
using System;

namespace PreprocessorDAppl {
   class Program {
      static void Main(string[] args) {
         #if (PI)
            Console.WriteLine("PI is defined");
         #else
            Console.WriteLine("PI is not defined");
         #endif
         Console.ReadKey();
      }
   }
}

زمانی که کد فوق کامپایل و اجرا شود، نتیجه زیر تولید می‌شود:

PI is defined

Conditional Directives (دستورات شرطی)

شما می‌توانید از دستور #if (شرطی) برای ایجاد یک دستور شرطی استفاده کنید. دستورات شرطی برای آزمایش نمادها یا نمادها برای بررسی اینکه آیا آن‌ها به true (درست) ارزیابی می‌شوند یا نه، مفید هستند. اگر آن‌ها به true (درست) ارزیابی شوند، کامپایلر تمام کد بین #if و دستور بعدی را ارزیابی می‌کند.

نحو دستور شرطی به صورت زیر است:

#if symbol [operator symbol]...

که در آن، symbol (نماد) نام نمادی است که می‌خواهید آزمایش کنید. همچنین می‌توانید از true (درست) و false (ناصحیح) استفاده کنید یا نماد را با عملگر نقیض (negation operator) پیشوند کنید.

عملگر نماد، عملگری است که برای ارزیابی نماد استفاده می‌شود. عملگرها می‌توانند یکی از موارد زیر باشند:

  • == (مساوی)
  • != (مساوی نبودن)
  • && (و)
  • || (یا)

همچنین می‌توانید نمادها و عملگرها را با پرانتز گروه‌بندی کنید. دستورات شرطی برای کامپایل کد برای یک ساختار اشکال‌زدایی (debug build) یا هنگام کامپایل برای یک پیکربندی خاص استفاده می‌شوند. یک دستور شرطی که با دستور #if (شرطی) آغاز می‌شود باید به طور صریح با دستور #endif (پایان شرطی) خاتمه یابد.

برنامه زیر استفاده از دستورات شرطی را نشان می‌دهد:

#define DEBUG
#define VC_V10
using System;

public class TestClass {
   public static void Main() {
      #if (DEBUG && !VC_V10)
         Console.WriteLine("DEBUG is defined");
      #elif (!DEBUG && VC_V10)
         Console.WriteLine("VC_V10 is defined");
      #elif (DEBUG && VC_V10)
         Console.WriteLine("DEBUG and VC_V10 are defined");
      #else
         Console.WriteLine("DEBUG and VC_V10 are not defined");
      #endif
      Console.ReadKey();
   }
}

زمانی که کد فوق کامپایل و اجرا شود، نتیجه زیر تولید می‌شود:

DEBUG and VC_V10 are defined

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - کلمه کلیدی Let (Let)

JavaScript – کلمه کلیدی Let (Let)

تعریف let کلیدواژه let در ES6 (2015) معرفی شد و دارای ویژگی‌های خاصی است که آن را از var...

بیشتر بخوانید
JavaScript - متغیرها (Variables)

JavaScript – متغیرها (Variables)

متغیرها در جاوا اسکریپت متغیرها در جاوا اسکریپت به عنوان ظرف‌هایی برای ذخیره‌سازی داده‌ها استفاده می‌شوند و می‌توانند به...

بیشتر بخوانید
JavaScript - کامنت‌ها (Comments)

JavaScript – کامنت‌ها (Comments)

کامنت‌ها در جاوا اسکریپت کامنت‌ها در جاوا اسکریپت به برنامه‌نویسان این امکان را می‌دهند تا توضیحاتی را به کد...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.