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





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









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









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





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

نمایش نتایج: از 1 به 2 از 2
  1. #1
    2009/06/06
    شيراز
    357
    87

    static,extern,Volatile

    سلام دوستان کسي ميتونه در باره توابعي که اولشون اين سه مياد توضيحي برام بده و همچنين متغيير هايي که در تعريفشون از از اين سه کلمه استفاده ميشه

    اگه يه مثال هم برا هرکدوم بزنه خيلي ممنون ميشم چون تا حدودي توضيحو ميدونم اما کد نمونه نميتونم براشون بنويسم.

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  2. #2
    2008/01/16
    رشت
    857
    10

    پاسخ : static,extern,Volatile

    وقتی در تابعی متغیر static تعریف بشه، مقدار اون در هنگام خروج از تابع حفظ میشه و در مراجعات بعدی به تابع، اون متغیر آخرین مقدار خودش رو حفظ کرده. به مثال زیر توجه کنید :

    کد PHP:
    #include <stdio.h>
     
    void func() {
        static 
    int x 0// x is initialized only once across three calls of func()
        
    printf("%d\n", x); // outputs the value of x
        
    1;
    }
     
    int main(int argcchar * const argv[]) {
        
    func(); // prints 0
        
    func(); // prints 1
        
    func(); // prints 2
        
    return 0;



    متغیرهای volatile، متغیرهایی هستند که کامپایلر هیچ عمل optimization روی آن انجام نمیدهد. به تابع زیر توجه کنید :
    کد PHP:
    static int foo;
     
    void bar(void) {
      
    foo 0;
     
      while (
    foo != 255)
         ;



    مقدار متغیر foo برابر با صفر قرار داده شده و در هیچ جای تابع نیز تغییر نمیکند و بهمین دلیل شرط حلقه while همیشه صحیح خواهد بود. پس کامپایلر در مراحل بهبود دادن کد، برنامه را به این صورت در نظر میگیرد :
    کد PHP:
    void bar_optimized(void) {
      
    foo 0;
     
      while (
    true)
         ;



    حالا اگر مثلا مقدار متغیر foo در یک روال وقفه تغییر کند، چون دیگر شرط حلقه توسط کامپایلر بصورت همیشه True در نظر گرفته شده است، حلقه نامتناهی خواهد شد و آنطور که برنامهآ*نویس انتظار داشت به مقدار متغیر foo وابسته نیست. در اینطور مواقع متغیر foo با کلمه کلیدی volatile از Optimize شدن توسط کامپایلر محافظت میشود.

    کلمه کلیدی extern عموما برای دسترسی به متغیرهایی عمومیآ*ای استفاده میشود که در فایل دیگری تعریف شده است.
    به مثال زیر توجه کنید :

    File1

    کد PHP:
     int GlobalVariable;     // implicit definition
     
    void SomeFunction(void);    // function prototype (declaration)
     
     
    int main() {
      
    GlobalVariable 1;
      
    SomeFunction();
      return 
    0;
     } 


    File2

    کد PHP:
    extern int GlobalVariable// explicit declaration
     
     
    void SomeFunction(void) {    // function header (definition)
      
    ++GlobalVariable;
     } 


    متغیر GlobalVariable در فایل۱ تعریف شده است و نیاز است در فایل دیگری، به مقدار آن دسترسی داشته باشیم. پس در فایل۲ متغیر GlobalVariable را از همان نوع int و با کلمه کلیدی extern تعریف میکنیم. کلمه کلیدی extern باعث میشود که در فایل۲ متغیر جدید دیگری به همان نام GlobalVariable تولید نشود، بلکه به کامپایلر میفهماند منظور برنامهآ*نویس همان متغیر GlobalVariable تعریف شده در فایل۱ است.


    مطالعه بیشتر:
    http://en.wikipedia.org/wiki/Static_variable
    http://en.wikipedia.org/wiki/Volatile_variable
    http://en.wikipedia.org/wiki/External_variable

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

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

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

  1. متغيير volatile
    توسط mostafa6369 در انجمن میکروکنترلرهای AVR
    پاسخ: 5
    آخرين نوشته: 2016/04/27, 14:36
  2. ip static
    توسط asad2006 در انجمن كامپيوتر ، اينترنت و علوم مرتبط
    پاسخ: 11
    آخرين نوشته: 2013/01/10, 17:15
  3. منظور از volatile تو code vision چیه؟
    توسط majid.4206 در انجمن میکروکنترلرهای AVR
    پاسخ: 20
    آخرين نوشته: 2012/11/13, 08:54
  4. __INLINE static void
    توسط ieee7 در انجمن NXP
    پاسخ: 11
    آخرين نوشته: 2011/10/22, 10:32
  5. volatile unsigned long
    توسط ieee7 در انجمن NXP
    پاسخ: 3
    آخرين نوشته: 2011/10/20, 03:20

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

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

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

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

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