volatile در آردوینو یک کلمهی کلیدی است که بهعنوان توصیفکنندهی متغیر شناخته میشود. برای تغییر نحوهی برخورد کامپایلر و برنامههای بعدی با متغیر، از این کلمهی کلیدی، (معمولاً) قبل از نوعدادهی آن متغیر استفاده میشود.
اعلان یک متغیر بهصورت volatile، یک دستور راهنما برای کامپایلر است. کامپایلر یک نرمافزار است که کد C و ++C شما را به کد ماشین ترجمه میکند. کد ماشین، دستورات واقعی چیپ Atmega در آردوینو است.
volatile مشخصاً به کامپایلر دستور میدهد که متغیر را از RAM بخواند (لود کند)، نه از یک ثبات ذخیره (انباره). ثبات انباره مکانی برای حافظهی موقت که متغیرهای برنامه در آن ذخیره و دستکاری میشوند. تحت شرایطی خاص، مقدار یک متغیری که در ثابت ذخیره شده میتواند غلط باشد.
یک متغیر باید هنگامی بهعنوان volatile اعلان شود که توسط چیزی فراتر از کنترلِ قسمتی از کدی که در آن آمده است، مقدارش قابلتغییر باشد؛ مانند یک thread اجرایی همزمان. در آردوینو تنها جایی که احتمال رخ دادن این قضیه وجود دارد، در قسمتی از کد است که به وقفهها (interrupts) مرتبط است. به این قسمت روتین سرویس وقفه گفته میشود.
مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | //هنگامی که پینِ وقفه وضعیت را عوض می کند، ال ای دی عوض میشود. //(تغییر وضعیت میدهد) int pin = 13; volatile int state = LOW; void setup() { pinMode(pin, OUTPUT); attachInterrupt(0, blink, CHANGE); } void loop() { digitalWrite(pin, state); } void blink() { state = !state; } |