نمایش نتایج 1 تا 5 از 5

نام تاپیک: کاربرد دستور های ,else, #elif, #endif, #define , #iF#‎

  1. #1
    کاربر دائمی آواتار amirjalili
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    هر جایی که کنجکاویم و نیاز به دانستنم رو تحریک کنه
    پست
    792

    کاربرد دستور های ,else, #elif, #endif, #define , #iF#‎

    دستورهای #else, #elif, #endif, #define و iF#‎ به چه دردی میخورند. msdn رو دیدم اما چیزی درست و درمون متوجه نشدم. از دوستان اگر کسی میدونه راهنمایی کنید..
    ممنون.
    اینم لینک msdn
    http://msdn.microsoft.com/en-us/library/4y6tbswk.aspx

  2. #2
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313

    نقل قول: کاربرد دستور های ,else, #elif, #endif, #define , #iF#‎

    برای زمان کامپایل شدن هست فرض کنید برنامه ای نوشتید که 2 نسخه داره ، یک نسخه مثلا فقط کارهای پایه را انجام می دهد و یک نسخه تمام قابلیت ها را دارد. مطمئنا شما نمی آید دوتا پروژه تعریف کنید، یک پروژه تعریف می کنید و از این دستورات برای کامپایل استفاده می کنید. اگر شرط بر قرار بود آن قسمت کامپایل خواهد شد در غیر اینصورت اصلا کامپایل نمی شود. شاید شما بگید خوب چه کاری هست با یک متغیر در برنامه نسخه برنامه را چک می کنم و در صورت برقراری شرط این کار را انجام می دهم ، خوب برنامه شما اگر کرک شود ، براحتی همه برنامه قابل اجرا خواهد بود ولی در این روش اصلا کدی کامپایل نمی شود.
    در همین مثال
    #define DEBUG
    // ...
    #if DEBUG
    Console.WriteLine("Debug version");
    #endif


    اگر خط اول را حذف کنید کد مابیل شرط کامپایل نخواهد شد.
    فکر کنید یک برنامه نوشتید که یک نسخه دمو دارد ، و یک نسخه نهایی ، شما نسخه دمو را به همه خواهید داد چه روشی را استفاده خواهید کرد که اگر نسخه دمو کرک شما برنامه شما ایمن باشد؟

  3. #3
    کاربر دائمی آواتار amirjalili
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    هر جایی که کنجکاویم و نیاز به دانستنم رو تحریک کنه
    پست
    792

    نقل قول: کاربرد دستور های ,else, #elif, #endif, #define , #iF#‎

    با تشکر از شما ..
    لطفا معنی کد های زیر را توضیح دهید.

    #define DEBUG
    // ...
    #if DEBUG
    Console.WriteLine("Debug version");
    #endif


    Debug اینجا یعنی چی که ابتدا تعریفش کرده.. بعد گفته if Debug# ..
    معنی کد بالا چیست؟
    یا در مثال پایین که از سایت MSDN نقل میکنم :


    #define DEBUG
    #define MYTEST
    using System;
    public class MyClass
    {
    static void Main()
    {
    #if (DEBUG && !MYTEST)
    Console.WriteLine("DEBUG is defined");
    #elif (!DEBUG && MYTEST)
    Console.WriteLine("MYTEST is defined");
    #elif (DEBUG && MYTEST)
    Console.WriteLine("DEBUG and MYTEST are defined");
    #else
    Console.WriteLine("DEBUG and MYTEST are not defined");
    #endif
    }
    }


    MyTest که در بالا تعریف شده به چه معنی است؟ بالاخره یه معنایی اینها باید داشته باشند که آنها رو در شرط قرار میدهیم.
    با تشکر

  4. #4

    نقل قول: کاربرد دستور های ,else, #elif, #endif, #define , #iF#‎

    سلام
    تیتر انگلیسی این موضوع Preprocessor Directives میباشد(برای جستجو گفتم)
    فرض کنید شما یه برنامه مینویسید که در ابتدای برنامه یه پیغام یا فرم لوگین نمایش داده میشه.
    در طول برنامه نویسی و تست برنامه این کار اعصاب خوردکنه.
    شما میایید این پیش پردازندها رو به کارمیگیرد
    با این روش که ابتدا در قسمت Using ابتدا
    #define متغیر
    را تعریف میکنید
    نکته ای که اینجا هست اینه که نام متغیر اختیاری هست در پست قبل MYTEST و DEBUG .
    بعد با #if و #elif و دیگر پیش پردازنده ها کدتون رو مدیریت میکنید.
    برای مثال اگر در برنامه پست قبل DEBUG فعال و MYTESTفعال نباشد(از قسمت Using حذفش کرده باشید)
    این خط اجرا میشود
    Console.WriteLine("DEBUG is defined");

  5. #5

    نقل قول: کاربرد دستور های ,else, #elif, #endif, #define , #iF#‎

    سلام مجدد
    رایجترین پیش پردازنده ها :


    #define #elif #line #pragma warning
    #undef #endif #region #pragma checksum
    #if #warning #endregion
    #else #error #pragma


    به نظر من کتاب Wrox_C#‎ 2008 Programmer’s Reference دراین رابطه میتونه مفید باشه .[فکر نکنید خیلی زبان بلدم ، کتابش رو ساده نوشتند]

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •