اطلاعیه

Collapse
No announcement yet.

استفاده از دستورات پیشپردازنده ... ifdef# undef#...

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    استفاده از دستورات پیشپردازنده ... ifdef# undef#...

    سلام
    میخوام تو یه برنامه یه شرطی بزارم که اگه یه ماکرو تعریف شده بود کاری رو انجام بده و اون ماکرو رو غیر فعال کنه یعنی تعریف نشده بشه ولی وقتی برنامه میکرو اجرا میشه اول از همه این دستورات پیشپردازنده اجرا میشه و دیگه نمیشه تغیرشون داد یعنی شرطی براشون گذاشت یا مثلا اگهdefine# ali رو تعریف کردم دیگه نمیشه undef# ali رو انجام داد
    یعنی میخوام تو حین برنامه ali رو دائم undef کنم و تو یه شرطی #ifdef ali بررسی کنم چیکار باید بکنم
    شاید من دستورات پیش پردازنده رو درست متوجه نشدم کسی لطف میکنه یه توضیحی بده ممنون میشم
    ذکات علم یاد دادنه ....

    #2
    پاسخ : استفاده از دستورات پیشپردازنده ... ifdef# undef#...

    دستورات پیش پردازنده که توسط میکرو اجرا نمیشه! تا اونجایی که من میدونم این دستورات رو کامپایلر برای ساخت فایل منبع استفاده میکنه.
    بیشتر توضیح بده میخوای چیکار کنی... متوجه نشدم
    https://www.linkedin.com/in/mohammadhosseini69

    http://zakhar.blog.ir

    دیدگاه


      #3
      پاسخ : استفاده از دستورات پیشپردازنده ... ifdef# undef#...

      ممنون از پاسختون
      ببین دوست عزیز فرض کنید تو یه برنامه اگه define# a بود یعنی a تعریف شده بود یه کاری انجام بشه حالا من میخوام تو جهایی از برنامه undef# a کنم و تو یه شرطی این موضوع رو چک کنم
      ifdef a #
      Relay_on
      #else
      define a#
      #endif
      حالا مشکل اینجاست که هنگام اجرای برنامه تمام این دستورات اجرا میشن و قابل برگشت نیستن یعنی اگه define# a بود دیگه نمیشه undef# a کنیم
      ذکات علم یاد دادنه ....

      دیدگاه


        #4
        پاسخ : استفاده از دستورات پیشپردازنده ... ifdef# undef#...

        راستش یه چیزی گفتی که همین یکم اطلاعاتم از پیش پردازنده پرید! یه جوری شد!!
        اصلا دستور پیش پردازنده واسه همچین کاری نیست!!
        چه اصراری داری از دستورات پیش پردازنده استفاده کنی؟؟ خیلی راحت میتونی با برنامه نویسی عادی این کارو بکنی. مثلا به اون متغیر مقدار -1 یده.
        https://www.linkedin.com/in/mohammadhosseini69

        http://zakhar.blog.ir

        دیدگاه


          #5
          پاسخ : استفاده از دستورات پیشپردازنده ... ifdef# undef#...

          سلام

          دوست خوبم دستورات پیش پردازنده همانطور که از اسمش معلومه ربطی به برنامه شما نداره و فقط شما با این دستورات کامپایلر رو وادار میکنید تا مطابق خواسته شما عمل کنه (قبل از عمل کامپایل) و برنامه رو به همون صورت کامپایل کنه.

          این امکانات بیشتر به دلیل این هست که کدها بتونن به راحتی جا به جا بشن و همچنین نوشتن فایل های کتابخونه ای با اونها بسیار ساده تر هست.

          تکه برنامه ای که شما نوشتید رو کافیه با دستورات برنامه نویسی سی بنویسید و احتیاجی به استفاده از دستورات پیش پردازنده نیست.

          موفق باشید
          Work with what you have .Never limit yourself by things you could have had

          دیدگاه


            #6
            پاسخ : استفاده از دستورات پیشپردازنده ... ifdef# undef#...

            اگر درست متوجه شده باشم دقیقا کد شما بایستی کار کنه. اما بایستی توجه کرد که ماکرو با متغیر یا تابع فرق میکنه. مثلا کد زیر عدد 14 رو چاپ میکنه.



            #define A


            #ifdef A
            printf("1"
            #undef A
            #else
            printf("2"
            #endif

            #ifdef A
            printf("3"
            #else
            printf("4"
            #endif



            و در حقیقت کامپایلر این کد رو میبینه.



            printf("1"
            printf("4"



            دستورات پیش پردازنده دستوراتی هستن که توسط پیش پردازشگر تفسیر میشوند تا بتوانند متن برنامه را طبق نیاز برنامه نویس تغییر داده و سپس به کامپایلر ارجاع دهند.

            دیدگاه


              #7
              پاسخ : استفاده از دستورات پیشپردازنده ... ifdef# undef#...

              از تمامی دوستان ممنونم راستش من تو یه برنامه ایی دیده بودم که از این دستورات استفاده کرده بود کنجکاو شدم ببینم تو برنامه نویسی دست ادمو بازتر میکنه که با این فرمایشاتی که شما فرمودین انگاری زیاد فرقی نمیکنه
              البته نه برای کتابخانه ها...

              اون مشکل برنامه رو قبلا حل کرده بودم فقط میخواستم با این دستورا ت پیشپردازده این کارو بکنم که نشد.
              بیخیالش شدیم :redface:
              حالا یه سوال تو نوشتن کتابخانه ها چطور میشه ازشون استفاده کرد ؟
              ذکات علم یاد دادنه ....

              دیدگاه


                #8
                پاسخ : استفاده از دستورات پیشپردازنده ... ifdef# undef#...

                نوشته اصلی توسط majid.4206
                حالا یه سوال تو نوشتن کتابخانه ها چطور میشه ازشون استفاده کرد ؟
                چندتا کتابخونه رو ببینی می فهمی قصیه از چه قراره...
                کتابخونه های winavr و مخصوصا avrlib خیلی خوین...

                اینم توضیح چندتا دستور برای شروع خوبه : (البته فکر میکنم آشنا باشی)
                http://fa.wikipedia.org/wiki/%D9%BE%DB%8C%D8%B4%E2%80%8C%D9%BE%D8%B1%D8%AF%D8%A 7%D8%B2%D9%86%D8%AF%D9%87
                https://www.linkedin.com/in/mohammadhosseini69

                http://zakhar.blog.ir

                دیدگاه

                لطفا صبر کنید...
                X