منبع اصلی نوشتار زیر در این لینک قرار دارد

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

در زبان برنامه نویسی C‌ (و همچنین ++C) پیش پردازنده ها معمولا در ابتدای برنامه تعریف می شوند ولی می توانند در هر خطی از برنامه تعریف شوند. آنها پیش از کامپایل شدن برنامه، پردازش می شوند. در ابتدای پیش پردازنده ها یک #‌ وجود دارد. مطابق شکل ۱ در فرایند کامپایل برنامه های C پیش از گام Compiler ، پیش پردازنده ها پردازش شده اند.

GCC چیست و نصب آن در توزیع های مختلف

تاریخچه و شروع برنامه نویسی در زبان C

انواع داده و تعریف متغیرها در زبان C

c_code_compailing

شکل ۱

 برخی از کاربردهای پیش پردازنده ها عبارتند از:

  • فایل های سرآیند (Headers Files).
  • ماکروها (Macros).
  • ایجاد شروط پیش از کامپایل برنامه.

در انتهای خطی که یک پیش پردازنده را تعریف کرده اید علامت ; نباید قرار دارد در صورتی که در انتهای تمامی دستورهای C‌ باید علامت ;‌ قرار گیرد.

ضمیمه کردن فایل های سرآیند

پیش پردازنده include# برای ضمیمه کردن فایل های سرآیند به درون برنامه استفاده می شود. فایل های سرآیند معمولا دارای پسوند h.‌ هستند. فرمت کلی ضمیمه کردن فایل سرآیند به صورت زیر است. به طور مثال فایل سرآیند stdio.h‌ را ضمیمه  شده است.

#include <header_file>
#include <stdio.h>

در فایل های سرآیند توابع و ماکروهایی تعریف می شوند که از آنها درون فایل هایی با پسوند c.‌ استفاده می کنیم. بنابراین برای استفاده از این توابع تعریف شده باید ابتدا فایل سرآیند آنرا در ابتدای برنامه ضمیمه کنیم. به طور مثال برای توابع ورودی و خروجی ()scanf و ()printf باید فایل سرآیند stdio.h در ابتدای برنامه ضمیمه شده باشد. همچنین در برنامه های بزرگ بهتر است برنامه نویس فایل های سرآیند مورد نیاز برنامه اش را تعریف می کند.

تعریف ماکروها

ماکرو بخشی از برنامه است که دارای یک نام است و می توانید از ماکرو درون برنامه توسط نام ماکرو استفاده کنید. برای تعریف ماکرو از پیش پردازنده define#‌ استفاده می شود. به طور مثال می خواهید به عدد ۳.۱۴ که عدد PI‌ است یک نام دهید و از این پس به جای استفاده مستقیم از عدد ۳.۱۴ از نام اختصاص داده شده به آن استفاده کنید. فرمت کلی تعریف ماکرو به صورت زیر است.

#define MACRO_NAME VALUE
#define PI 3.14

به عنوان مثال قطعه کد ۱ با استفاده از ماکرو تعریف شده مساحت دایره را حساب می کند. در صورتی که شما در جای دیگری از برنامه لازم به استفاده از عدد ۳.۱۴ داشته باشید، باز هم می توانید از ماکرو تعریف شده استفاده کنید.

#include <stdio.h>
#define PI 3.1415

int main()
{
    float radius, area;
    printf("Enter the radius: ");
    scanf("%d", &radius);
    area = PI*radius*radius;
    printf("Area=%.2f",area);
    return 0;
}

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