ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

نمایش نتایج: از 1 به 3 از 3
  1. #1
    2008/02/15
    136
    1

    define# یعنی چی؟

    سلام و با تشکر از این که به این تاپیک توجه می کنین .
    به ما تو دانشگاه ++c یاد دادن ولی هیچ چی در مورد دستوراتی مانند define , ifdef , endif,undef,elif و... نگفتن . نمی دونم این دستورات تو c ی یا این که تو ++c هم هست و به ما نگفتن ؟ به هر حال این دستورات رو زیاد تو برنامه های میکرو می بینم و چیزی ازش نمی دونم .ممنون میشم در مورد این دستورات توضیح بدین .اگه مثال هم بزنین بیشتر ممنون میشم .
    الهی خیر از جوانیتون ببینین :cry2:
    ای با من و پنهان چو دل از دل سلامت میکنم توکعبه ای هر جا روم قصد مقامت می کنم
    هر جا که هستی حاضری از دور در ما نا ظری شب خانه روشن میشود چون یاد نامت میکنم
    گه همچو باز آشنا بر دست تو پر میزنم گه چون کبوتر پرزنان آهنگ بامت می کنم

    مرا گویی تورا با این قفس چیست من چه دانم ، من چه دانم اگر مرغ هوایی این قفس چیست من چه دانم ، من چه دانم من چه دانم
  2. #2
    2008/02/01
    قائمشهر
    836
    0

    پاسخ : define# یعنی چی؟

    سلام
    خب به اين عبارات دقت كن:
    define==define
    ifdef==if defined
    ifndef==if not defined
    endif==end if
    undef==undefine
    elif==else if
    درسته؟
    خب به اين دستورات كه همه شون هم با # شروع ميشن ميگن preprocessor يا پيش پردازنده. به اين معني كه به همه ي اين دستورات قبل از شروع كامپايل پرداخته ميشه (precompile binding)
    خب دستور define برا معرفي يه ثابت پيش پردازنده هست. مثلا فرمان زير

    #define A B

    متغير پيش پردازنده ي A رو بعنوان جايگزيني برا B معرفي ميكنه. يعني قبل ازكامپايل هر جا كه A رو ديد B رو بصورت فيزيكي و همونطور كه هست جايگزين A ميكنه.
    لازم به كره كه B ميتونه يه عبارت هم باشه.
    خب بگذريم. بقيه به طريقي از همين مفهوم استفاده ميكنن

    مثلا undef باعث ميشه از اونجايي كه نوشته شده به بعد ديگه جاگزيني A با عيارت B صورت نگيره كه به طريقي معادل مفهوم از حالت تعريف خارج كردن A هست.

    مفهوم ifdef A هم اينه كه اگه A در مكاني كه الان در حال استفاده از ifdef هستيم تعريف شده هست ، جواب مثبته و تمام خطوط بعد از ifdef تا endif  مربوط به اون كه ميتونه چندين خط پايين تر باشه بايد اجرا بشن و اگه A تعريف شده نبود فرامين بين ifdef و endif اجرا نشن .  مثلا

    #ifdef A
    commands....
    #endif

    دقت كن كه اين if هاي پيش پردازنده مثل همون if هايي كه در ساختار دستورات C و C++ قرار دارن از قوانين تودرتو بودن پيروي ميكنن.
    خب فرمان ifndef همونطور كه از معنيش معلومه عمل عكس ifdef رو  انجام ميده.
    elif هم ميتونه مابين ifdef و endif يا ifndef و endif قرار بگيره و كار else if رو ميكنه كه كاملا معلومه. مثلا

    #ifdef A
    commands...
    #elif (index==12)
    commands...
    #endif


    مشابه حالت فوق هم براي ifndef قابل قبوله.

    فقط دقت داشته باش كه دو فرمان فوق با هم برابرند :
    #ifdef A
    #if defined A

    دقت كن كه اين فرامين رو سرعت اجرا تاثيري ندارن. چون binding اونا قبل از كامپايله.

    خب حالا بريم سراغ چيزي كه شما ديدي.
    شما احتمالا اين حالتو ديدي:

    #ifndef C
    #define C
    commands...
    #endif


    خب به اين حالت دقت كن. ميگه اگه C تعريف شده نبود تعريفش كن و اين فرامينو انجام بده، وگرنه اگه تعريف شده بود نمي خواد اين فرمانا رو انجام بدي. درسته؟
    خب از همين مفهوم معلومه كه هدف اين  بوده كه اين فرامين فقط يه بار اجرا شن و حتي بصورت اتفاقي هم چند بار اجرا نشن.
    خب اين حالت تو فايل هاي هدر كامپايلر C++ هم وجود داره . چون ممكنه شما اتفاقي تو دو جاي برنامه اون فايل هدر رو include كرده باشين كه مسلما زمان كامپايل ارور ميده ، ولي اين حالت باعث ميشه در دفعات بعدي include يه فايل هدر فرامين داخل بلوك ifndef ناديده گرفته شن تا از بروز خطا جلوگيري شه.

    تو ميكرو هم يه هدف مشابهي از استفاده ي اين پيش پردازنده ها مورد نظر بوده كه با توضيحاتي كه عرض كردم الان بايد براي شما قابل فهم باشه.
    البته اين دستورات كاربرد ماكرويي هم دارن كه فكر نكنم منظور شما اون باشه.
    Upload your files Here. Great Azeri Resumable File Host: http://endir.az/index.php?lang=5
  3. #3
    2007/10/07
    تهران
    128
    0

    پاسخ : define# یعنی چی؟

    دوستمون پاسخ کاملی دادند و در یک کلام این دستورات برای کامپایلر مفاهیم خاصی رو میده و اون رو در ترجمه برنامه به زبان ماشین کمک میکنه!

    امیدوارم کمکی کرده باشم

نمایش نتایج: از 1 به 3 از 3

موضوعات مشابه

  1. err define Atmel Studio
    توسط avr1083 در انجمن میکروکنترلرهای AVR
    پاسخ: 3
    آخرين نوشته: 2015/09/03, 11:09
  2. فرق #byte و #define
    توسط amanver در انجمن میکروکنترلرهای PIC
    پاسخ: 10
    آخرين نوشته: 2015/06/17, 21:56
  3. تفاوت بين typedef و define
    توسط sejil در انجمن C , C++ , C#
    پاسخ: 3
    آخرين نوشته: 2014/11/27, 11:11
  4. #ifndef و define و endif در سی ++
    توسط hosseinam در انجمن C , C++ , C#
    پاسخ: 1
    آخرين نوشته: 2014/08/28, 11:19
  5. #define
    توسط adc در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2011/10/14, 12:52

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

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