PDA

View Full Version : دستورات پیش پردازنده



ICEMAN
جمعه 17 اسفند 1386, 13:09 عصر
سلام ...
یه توضیحی در مورد این دستورات و جای استفاده شون یه توضیحی به من بدید .


#define
#ifdef
#ifndef
#if
#endif
#elif

بعضی جاها از define برای مثل توابع استفاده میشه مثلا :

#define CIRCLE_AREA( x ) ( PI * ( x ) * ( x ) )
چه فرقی با تعریف معملی به صورت یه function داره مثلا :

double circleArea( double x ) { return 3.14159 * x * x; }

ممنون

Inprise
جمعه 17 اسفند 1386, 13:32 عصر
فانکشن در زمان کامپایل بصورت یک قطعه باینری با برنامه ترکیب میشه . چیزی که در موردش سوال کردی ماکرو هست . ماکرو ها در مرحله پیش پردازش ، یعنی قبل از کامپایل اصلی ، تبدیل به کد سی میشن ، و بعد کامپایل میشن . استفاده از ماکرو ها منافع زیادی داره ، مثل میشه بر اساس برخی پارامترها فانکشن تولید کرد ، یا بر اساس کتابخانه های موجود ، یا معماری سخت افزاری سیستم و ...قسمتی از اجزاء یک تابع رو در زمان پیش پردازش تولید کرد ، تا بعد کامپایل بشه .

BitMap
جمعه 17 اسفند 1386, 14:13 عصر
البته استفاده از ماکرو فقط برای کدهای کوچک توصیه می شه و برای قطعه کدهای بزرک از توابع استفاده کن
اون تعداد دستور اول هم در واقع مسیر کامپایل رو تعیین می کنند.مثلا


#ifdef Win32
int _stdcall WinMain(...)
#else
int main()
#endif
{
}


میگه اگر Win32 تعریف شده بود پیاده سازی تابع بصورت WinMain وگرنه بصورت main باشه
در واقع این دستورات ، دستورات شرطی کردن کامپایل هستند.