اطلاعیه

Collapse
No announcement yet.

مشکل در تعریف ماکرو

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

    مشکل در تعریف ماکرو

    با عرض سلام و خسته نباشید خدمت شما. من در فایلهای header که برای ماژولهای مختلف و برای میکروکنترلرهای AVR به زبان C نوشته میشه دیدم که در ابتدای برنامه از دستور پیش پردازنده ifndef استفاده میشه و در خط بعدی از دستور پیش پردازنده define استفاده میشه. به عنوان نمونه :

    ifdef LCD_H
    define LCD_H

    اولا به من بگین که برای چی در ابتدای برنامه از این دستورات استفاده میشه. ثانیا در دستور پیش پردازنده define چرا فقط نام ماکرو که در اینجا LCD_H هست ذکر شده و رشته ای که ماکرو جایگزین آن است ذکر نشده است. خیلی ممنون.

    #2
    پاسخ : مشکل در تعریف ماکرو

    یکی نیست جواب بده.

    دیدگاه


      #3
      پاسخ : مشکل در تعریف ماکرو

      برای اینکه کامپایلر یه فایل رو چندبار اینکلود نکنه (و در نتیجه خطای تعریف دوباره پیش بیاد) چون مثلا همین فایل LCD.h ممکنه در چندفایل اینکلود شده باشه ؛ در ابتدای فایلهای هدر یه ماکرو تعریف میکنن.
      برای اولین با ر که این فایل ضمیمه (همون اینکلود) میشه این ماکرو تعریف و توسط کامپایلر ذخیره میشه. دفعه بعد که این فایل از هر جایی ابنکلود بشه چون قبلا اون ماکرو تعریف شده کامپایلر بیخیال این قسمت داخل ifdef میشه (در واقع فایل اینکلود نمیشه)
      استاندارد تعریف ماکرو هم اینطوریه که تمام حروف اسم فایل بزرگ و به جای نقطه از _ استفاده میکنند

      * در ضمن د. جور تعریف ماکرو داریم یکیش فقط تعریف ماکرو هست دومیش اونیه که شما گفتی

      دیدگاه


        #4
        پاسخ : مشکل در تعریف ماکرو

        سلام.
        خیلی ممنون.
        اسمی که جلو ifndef نوشته میشه دقیقا جلو define نیز نوشته میشه. این اسم چه کاربردی داره و آیا قانون خاصی برای انتخاب این اسم وجود داره؟
        تا جایی که میدونم 2 نوع تعریف ماکرو داریم. یکی ماکرویی که جایگزین یک رشته میشه و یکی ماکرویی که دارای پارامتر هست.

        کد:
        #define  رشته  نام ماکرو
        #define  تعریف ماکرو  (اسامی پارامترها)نام ماکرو
        حالا چرا در این define فقط نام ماکرو ذکر شده است. این define چه کاربردی داره.
        خیلی ممنون.

        دیدگاه


          #5
          پاسخ : مشکل در تعریف ماکرو

          شما همون چند خط توضیحات منو خوندی؟
          نوشته اصلی توسط mojalan
          برای اولین با ر که این فایل ضمیمه (همون اینکلود) میشه این ماکرو تعریف و توسط کامپایلر ذخیره میشه. دفعه بعد که این فایل از هر جایی ابنکلود بشه چون قبلا اون ماکرو تعریف شده کامپایلر بیخیال این قسمت داخل ifdef میشه (در واقع فایل اینکلود نمیشه)
          استاندارد تعریف ماکرو هم اینطوریه که تمام حروف اسم فایل بزرگ و به جای نقطه از _ استفاده میکنند
          اولین بار infndef کار میکنه و برای دفعات بعد ifdef
          روش نامگذاری هم آخرین خط توضیحات بالا
          لزوما یه ماکرو برای جایگزینی با یه رشته تعریف نمیشه (ماکرو بدون رشته و پارامتر)

          دیدگاه

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