آیا می توانیم از static و volatile با هم در C استفاده کنیم؟
آیا می توانیم از static و volatile با هم در C استفاده کنیم؟

تصویری: آیا می توانیم از static و volatile با هم در C استفاده کنیم؟

تصویری: آیا می توانیم از static و volatile با هم در C استفاده کنیم؟
تصویری: چیزی که بقیه در مورد برنامه نویسی فکر میکنن vs واقعیت برنامه نویسی 2024, نوامبر
Anonim

استاتیک متغیرها ارزش خود را بین فراخوانی توابع حفظ می کنند. فرار متغیرها (که مخالف آن نیست ایستا ) هستند استفاده شده زمانی که یک متغیر است استفاده شده هم در یک ISR (روال سرویس وقفه) و هم در خارج از آن. فرار به کامپایلر می گوید که همیشه به جای ذخیره کردن آن در CPUregister، آن را از RAM بارگیری کند.

به همین ترتیب ممکن است پرسیده شود، آیا می توانیم از استاتیک و فرار با هم استفاده کنیم؟

حتی اگر شما دسترسی a ایستا ارزش گذاری از طریق چندین رشته، هر رشته می توان نسخه کش محلی خود را داشته باشد! برای جلوگیری از این تو می توانی متغیر را به صورت اعلام کنید فرار استاتیک و این اراده هر بار که مقدار جهانی را به رشته تحریر می‌کند، مجبور کنید. با این حال، فرار جایگزین همگام سازی مناسب نیست!

به طور مشابه، چرا در C از فرار استفاده می کنیم؟ C فرار است کلمه کلیدی یک واجد شرایط است که هنگام اعلام متغیر بر روی آن اعمال می شود. به کامپایلر می گوید که مقدار متغیر ممکن است در هر زمان تغییر کند - بدون اینکه هیچ اقدامی توسط کدی که کامپایلر در نزدیکی پیدا می کند انجام شود. پیامدهای این امر کاملاً جدی است.

با توجه به این موضوع، فرار استاتیک در C به چه معناست؟

ایستا به محدوده متغیر اشاره دارد. اگر متغیر سراسری است، به این معنی است که دامنه محدود به فایل منبعی است که در آن اعلام شده است. اگر متغیر محلی برای تابع باشد، به این معنی است که حافظه مورد استفاده برای نگهداری این متغیر در حافظه تخصیص‌یافته برنامه است.

آیا می توانیم از const با volatile در C استفاده کنیم؟

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

توصیه شده: