PDA

View Full Version : سوال: عبارت پیش پردازنده همان if# به چه درد میخورد؟



teardrop
یک شنبه 08 فروردین 1389, 12:47 عصر
به نام خدا
من در بعضی جاها دیدم که قبل از if یا کلماتی دیگر از شارپ استفاده میکنند و فقط میدونم که به این ها پیش پردازنده مگویند.
میخواستم بدونم این # چه کار میکند؟
مثال ساده از کاربرد آن هم بزنید بد نیست.

exlord
یک شنبه 08 فروردین 1389, 13:44 عصر
http://msdn.microsoft.com/en-us/library/aa691094%28VS.71%29.aspx

Amir Oveisi
یک شنبه 08 فروردین 1389, 13:51 عصر
اینPreprocessor برای اینه که برای کامپایلر یک شرطی رو قائل بشیم که موقع کامپایل چه قسمت هایی رو از کد کامپایل کنه. به مثال زیر دقت کنید:

#define DEBUG
#define VC_V7
using System;
public class MyClass
{
public static void Main()
{

#if (DEBUG && !VC_V7)
Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && VC_V7)
Console.WriteLine("VC_V7 is defined");
#elif (DEBUG && VC_V7)
Console.WriteLine("DEBUG and VC_V7 are defined");
#else
Console.WriteLine("DEBUG and VC_V7 are not defined");
#endif
}
}

در این مثال در خط اول اون دوتا symbol رو define کردیم و در کدهای برنامه با قرار دادن preprocessor ها به کامپایلر نشون میدیم که به چه شکلی این کدها رو کامپایل کنه.
دقت داشته باشید که if# رو با if معمولی اشتباه نگیرید چون در حالت معمولی کل کدهای برنامه کامپایل میشه و برای اجرای یک قسمت از کد ها شرط قائل میشیم اما در استفاده از if# ما برای کامپایل شدن یک قسمت از کد برنامه شرط قائل میشیم. مثلا در کد بالا خط 10کامپایل نمیشه چون شرط کامپایل اون قسمت درست نیست.

همونطور که دوستمون اشاره کردند برای اطلاعات بیشتر اینجا رو ببینید:
http://msdn.microsoft.com/en-us/library/ed8yd1ha%28VS.71%29.aspx

موفق باشید

r00tkit
یک شنبه 08 فروردین 1389, 17:35 عصر
اما....

The C#‎ Programming Language




The preprocessing directives provide the ability to conditionally skip sections of source files, to report error and warning conditions, and to delineate distinct regions of source code. The term "preprocessing directives" is used only for consistency with the C and C++‎ programming languages. In C#‎, there is no separate preprocessing step; preprocessing directives are processed as part of the lexical analysis phase.