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

دستورات پیش‌پردازنده شامل include، define و دستورات شرطی کامپایل

پیش‌پردازنده چیست؟

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

#include — درج فایل

محتوای یک فایل هدر را در برنامه قرار می‌دهد:

#include <stdio.h>    // فایل‌های سیستم — از مسیرهای استاندارد
#include "myheader.h" // فایل‌های پروژه — از پوشه فعلی

#define — تعریف ماکرو

#define PI 3.14159
#define MAX_STUDENTS 50

double area = PI * r * r;

پیش‌پردازنده قبل از کامپایل، هر PI را با 3.14159 جایگزین می‌کند.

ماکروهای تابع‌مانند

#define SQUARE(x) ((x) * (x))

int result = SQUARE(5);  // می‌شود ((5) * (5)) = 25

⚠️ پرانتزها مهم‌اند! بدون پرانتز SQUARE(2+3) به 2+3*2+3 تبدیل می‌شود که ۱۱ است نه ۲۵!

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

ماکرومقدار
__DATE__تاریخ کامپایل
__TIME__زمان کامپایل
__FILE__نام فایل فعلی
__LINE__شماره خط فعلی

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

برای کامپایل شرطی بخش‌هایی از کد:

#define DEBUG 1

#if DEBUG
    printf("Debug mode is on!");
#endif

#ifdef PI
    // اگر PI تعریف شده باشد کامپایل می‌شود
#endif

#ifndef MY_HEADER
#define MY_HEADER
    // محتوای هدر — از درج دوباره جلوگیری می‌کند
#endif

Include Guard — الگوی مهم هدرها

در فایل‌های هدر خودتان همیشه این الگو را بگذارید تا از درج دوباره جلوگیری شود:

// myheader.h
#ifndef MYHEADER_H
#define MYHEADER_H

// محتوای هدر اینجا

#endif

نکات مهم

این مبحث بخشی از دوره آموزش کامل زبان C است.

ابزارهای مرتبط