اطلاعیه

Collapse
No announcement yet.

تفاوت بین typedef و define

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

    تفاوت بین typedef و define

    با عرض سلام و خسته نباشید
    دوستان تفاوت بین typedef و define رو میشه توضیح بدین
    با تشکر
    در کشور هاي غربي انتقال تجربيات و دانش به افراد مبتدي يک پيشرفت محسوب شده و به آن مديريت دانش مي گويند. ولي متاسفانه اين فرهنگ هنوز در کشور ايران رايج نشده است !!!

    #2
    پاسخ : تفاوت بین typedef و define

    معمولا به جای هم به کار میرن اما
    در دیفاین شما دارین معادل سازی میکنین ،یعنی مثلا میگین پورت B رو معادل با پورت lcdقرار بده
    کد:
    #define PORTB LCD_PORT
    بعدا شما میتونین هرجا که با پورت b کار داشتین به جاش از عبارت دوم یا LCD_PORT استفاده کنین ، فرض کنید دارید یه کتابخونه قابل حمل برای ال سی دیتون مینویسید و میخواید به راحتی بتونین ازش تو پروژه های مختلف و میکرو های مختلف استفاده کنین و یا اونو به اشتراک بزارین
    حالا فقط یه بار اول برنامه پورت ال سی دیتون رو برابر پورت دلخواه تعریف میکنین و بعد تو بدنه برنامه هر جا که با پورت واسطی که قراره با ال سی دی ارتباط داشته باشه کار داشتین LCD_PORT رو قرار میدین ،سود این کار اینه وقتی بخواین تو یه میکرو یا پروژه ی دیگه پورت ال سی دی رو عوض کنین نیاز نیست تک تک خط ها رو دنبال پورت مزبور بگردین و همون اول برنامه تو دیفایت تغییرش میدین
    -------
    تایپ دف هم در واقع یه نوع داده جدید تعریف میکنه ، مثلا شما یادت نیس متغیر نوع کاراکتری یا اینتجر چند بایته و ... مینویسی
    کد:
    typedef char 1byte;
    کد:
    typedef int 2byte;
    و همچنین دیفاین بر خلاف تایپ دف یک دستور پیش پردازندست
    توضیحات بیشتر :
    http://stackoverflow.com/questions/1666353/are-typedef-and-define-the-same-in-c
    http://programmers.stackexchange.com/questions/130679/typedefs-and-defines
    زندگي آن چه که زيسته ايم نيست ، بلکه آن چيزي است که از گذشته به خاطر داريم ...گابريل گارسيا مارکز

    دیدگاه


      #3
      پاسخ : تفاوت بین typedef و define

      نوشته اصلی توسط محمود حسینی پور
      معمولا به جای هم به کار میرن اما
      در دیفاین شما دارین معادل سازی میکنین ،یعنی مثلا میگین پورت B رو معادل با پورت lcdقرار بده
      کد:
      #define PORTB LCD_PORT
      بعدا شما میتونین هرجا که با پورت b کار داشتین به جاش از عبارت دوم یا LCD_PORT استفاده کنین ، فرض کنید دارید یه کتابخونه قابل حمل برای ال سی دیتون مینویسید و میخواید به راحتی بتونین ازش تو پروژه های مختلف و میکرو های مختلف استفاده کنین و یا اونو به اشتراک بزارین
      حالا فقط یه بار اول برنامه پورت ال سی دیتون رو برابر پورت دلخواه تعریف میکنین و بعد تو بدنه برنامه هر جا که با پورت واسطی که قراره با ال سی دی ارتباط داشته باشه کار داشتین LCD_PORT رو قرار میدین ،سود این کار اینه وقتی بخواین تو یه میکرو یا پروژه ی دیگه پورت ال سی دی رو عوض کنین نیاز نیست تک تک خط ها رو دنبال پورت مزبور بگردین و همون اول برنامه تو دیفایت تغییرش میدین
      -------
      تایپ دف هم در واقع یه نوع داده جدید تعریف میکنه ، مثلا شما یادت نیس متغیر نوع کاراکتری یا اینتجر چند بایته و ... مینویسی
      کد:
      typedef char 1byte;
      کد:
      typedef int 2byte;
      و همچنین دیفاین بر خلاف تایپ دف یک دستور پیش پردازندست
      توضیحات بیشتر :
      http://stackoverflow.com/questions/1666353/are-typedef-and-define-the-same-in-c
      http://programmers.stackexchange.com/questions/130679/typedefs-and-defines
      با تشکر از توضیحات شما دوست عزیز ولی باز درست متوجه موضوع نشدم که تفاوتشون چیه . همونطور که گفتین اینا همیشه جای هم دیگه مورد استفاده قرار می گیرن .
      در کشور هاي غربي انتقال تجربيات و دانش به افراد مبتدي يک پيشرفت محسوب شده و به آن مديريت دانش مي گويند. ولي متاسفانه اين فرهنگ هنوز در کشور ايران رايج نشده است !!!

      دیدگاه


        #4
        پاسخ : تفاوت بین typedef و define

        با سلام
        define در عمل هیچ کار خاصی انجام نمیده، میشه اینطور بهش نگاه کرد که با این دستور میشه قیافه دستورات و متغیر ها رو اون طور که ما می خواهیم، عوض کرد. دقت کنید که define همراه علامت # می یاد، که یعنی قبل از پردازش مورد توجه قرار میگیره، پس کار define میشه این:
        ***کامپایلر قبل کامپایل میاد و هرچی که define کردیم رو تو کد پیدا می کنه و چیزی که ما به define دادیم رو جاش می ذاره.
        کد:
        #define my_int int;
        در بالا هر چی my_int پیدا کنه جاش میذاره int و بعد کامپایل میکنه
        ************************************************** ************************************************** *******************
        اما typedef ابزاری است که با اون برنامه نویس نوع خاصی از متغیر رو عوض می کنه
        کد:
        typedef int my_int;
        تا اینجا که یکی هستند، بله اما تفاوت ها
        جدای صورت نوشتن ظاهری define دستور پیش پردازشی است و در کل کد به صورت global اجرا میشه، اما typedef از قوانین دیگر متغیر ها تبعیت میکنه، یعنی اینکه typdef با اسم یکسان در دو تابع مجزا می تونن به متغیر هایی مختلف اشاره کنن.
        تفاوت دیگه در تعریف پوینتر هست،به کد زیر دقت کنید
        کد:
        typedef int *my_int1;
        #define my_int2 int *
        The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

        دیدگاه

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