اطلاعیه

Collapse
No announcement yet.

چند تا سوال ابتدایی در مورد Keil

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

    چند تا سوال ابتدایی در مورد Keil

    سلام
    چند تا سوال ابتدایی در مورد Keil دارم

    1-مفهوم __INLINE چی هست؟
    2-مفهوم "->" چی هست؟
    3-مفهوم Static ، extern،Volatile چی هستن؟

    کد نمونه :
    کد:
    __INLINE static void LED_Off (uint32_t led) {
    
     LPC_GPIO2->FIOPIN &= ~(led);         /* Turn Off LED */
    }

    #2
    پاسخ : چند تا سوال ابتدایی در مورد Keil

    نگو کیل بگو برنامه نویسی زبان سی

    __INLINE
    همون بالا که برنامه رو معرفی میکنی زیر همون جا برنامه رو مینوسی و برات اجرا میکنه!
    extern
    قراره این زیر برنامه از بیرون کنترل بشه مثلا توابع داخل کتاب خونه ها از داخل main فراخوانی و استفاده میشن

    Static
    اطلاعات این تابع رو نگه دار و حذف نکن
    Volatile
    نمیدونم!

    اگه اشتباه گفتم خواهش میکنم اساتید اصلاح کنن!!!
    انجام پروژه هاي برنامه نويسي اندرويد
    [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
    http://cafebazaar.ir/app/?id=com.atxdroid

    دیدگاه


      #3
      پاسخ : چند تا سوال ابتدایی در مورد Keil

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

      دو تا زیر سوال دیگه !
      4-وقتی عبارت __INLINE رو بنویسیم میشه در سطور قبل از تعریف تابع ازش استفاده کرد؟؟؟
      5-ممکنه دوستان در مورد سوال 3 دقیق تر توضیح بدین ، مثلا در کد بالا اگر Static رو ننویسیم و یا مثلا بنویسیم extern چه فرقی میکنه؟

      دیدگاه


        #4
        پاسخ : چند تا سوال ابتدایی در مورد Keil

        با سلام،

        اولا، همونطور که جناب محسن خان فاریابی فرمودن، اینا مربوط به برنامه نویسی C هستش، نه کامپایلر کیل......

        و اما، Volatile تعریفی است برای متغیر و یا تابعی که ممکنه در طول برنامه توسط عوامل مختلفی از جمله سیستم عامل، سخت افزار و غیره تغییر کنه ولی نباید توسط کامپایلر بهینه سازی ( Optimization ) بشه....

        Static هم متغیریه که در تابع خودش ممکنه تغییر کنه ولی با خروج از تابع مربوطه و فراخوانی مجدد تابع، آخرین مقدار خودش رو حفظ میکنه ولی در خارج از تابع مربوطه معتبر نیست....

        Extern هم مثل Static هستش، با این تفاوت که در خارج از تابع مربوطه هم معتبره و ممکنه مقدارش توسط عوامل دیگه هم تغییر کنه....

        این LPC_GPIO2->FIOPIN هم یعنی اینکه یه استراکچری هست به نام LPC_GPIO2 که یکی از زیر مجموعه هاش FIOPIN هست. لذا برای دسترسی به اون زیر مجموعه، اینطوری مینویسیم LPC_GPIO2->FIOPIN که میشه اینطوری هم نوشت LPC_GPIO2.FIOPIN .....

        ضمنا، Inline هم به کامپایلر میگه که عزیز دل برادر، این کد رو همینجا کامپایل کن و اجرا کن، مبادا ببریش یه جای دیگه تا لازم بشه از استک هم استفاده کنی! که این امر موجب افزایش سرعت اون قطعه کد خواهد شد. اما در نظر داشته باشید که حجم کد رو افزایش خواهد داد....

        مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

        Sh_Nourbakhsh@Yahoo.com

        http://s2.picofile.com/file/7170362468/_Wall_e_.jp

        دیدگاه


          #5
          پاسخ : چند تا سوال ابتدایی در مورد Keil

          نوشته اصلی توسط aivhl
          با سلام،

          و اما، Volatile تعریفی است برای متغیر و یا تابعی که ممکنه در طول برنامه توسط عوامل مختلفی از جمله سیستم عامل، سخت افزار و غیره تغییر کنه ولی نباید توسط کامپایلر بهینه سازی ( Optimization ) بشه....

          Extern هم مثل Static هستش، با این تفاوت که در خارج از تابع مربوطه هم معتبره و ممکنه مقدارش توسط عوامل دیگه هم تغییر کنه....
          ...


          "طول برنامه توسط عوامل مختلفی از جمله سیستم عامل، سخت افزار"
          چی اون تغیر میکنه؟
          اسمش؟
          متغیر هاش؟
          محلش؟

          "ممکنه مقدارش توسط عوامل دیگه هم تغییر "
          یعنی متغیر های این تابع به شکل عمومی تعریف میشن؟
          انجام پروژه هاي برنامه نويسي اندرويد
          [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
          http://cafebazaar.ir/app/?id=com.atxdroid

          دیدگاه


            #6
            پاسخ : چند تا سوال ابتدایی در مورد Keil

            نوشته اصلی توسط محسن فاریابی
            "طول برنامه توسط عوامل مختلفی از جمله سیستم عامل، سخت افزار"
            چی اون تغیر میکنه؟
            اسمش؟
            متغیر هاش؟
            محلش؟

            "ممکنه مقدارش توسط عوامل دیگه هم تغییر "
            یعنی متغیر های این تابع به شکل عمومی تعریف میشن؟
            چرا اینطوری میخونیش اخوی؟! شاید هم من بد نوشتم


            و اما، Volatile تعریفی است برای متغیر و یا تابعی که ممکنه در طول برنامه توسط عوامل مختلفی از جمله سیستم عامل، سخت افزار و غیره تغییر کنه ولی نباید توسط کامپایلر بهینه سازی ( Optimization ) بشه....
            یعنی مقدار یه متغیر و یا تابع که از نوع Volatile هست، ممکنه که در روند اجرای برنامه، توسط سیستم عامل، سخت افزار و یا هر چیز دیگه ای تغییر پیدا کنه به همین دلیل و برای جلوگیری از خطا، نباید توسط کامپایلر در پروسه بهینه سازی شرایطش تغییر کنه ....


            "ممکنه مقدارش توسط عوامل دیگه هم تغییر "
            یعنی متغیر های این تابع به شکل عمومی تعریف میشن؟
            نخیر، یعنی اینکه، متغیری که از نوع Extern باشه، در اصل یک متغیر عمومی هستش که در تمام شرایط و توسط هر تابع دیگری ممکنه مقدارش تغییر کنه، حتی تابع خودش ....
            مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

            Sh_Nourbakhsh@Yahoo.com

            http://s2.picofile.com/file/7170362468/_Wall_e_.jp

            دیدگاه


              #7
              پاسخ : چند تا سوال ابتدایی در مورد Keil

              برای فهمیدن نوع Volatile تا انجایی که من فهمیدم یک مثال میزنیم

              متغیرهایی از نوع volatile متغیرهایی هستند که لزوما از طریق پردازش جاری تغییر نمیآ‌کنند. بنابراین ممکن است مقدار آنها توسط پردازش دیگر یا یک وقفه عوض شود، بدون آنکه کامپایلر متوجه باشد. برای جلوگیری از چنین خطایی، کلمه کلیدی volatile در ابتدای تعریف متغیر استفاده میآ‌شود، تا کامپایلر عملیات بهینهآ‌سازی روی آن انجام نداده، و[glow=red,2,300] در هر بار فراخوانی اسم متغیر در طول برنامه، مقدار آن را از محل حافظه بخواند[/glow].

              دیدگاه

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