volatile
volatile
是 C 语言内定的关键字之一,它用在宣告变数的资料型态之前,让编译器还有后续的程式码改变对它的操作方式。
宣告一个变数为 volatile 可以引导编译器的行为。编译器是能将 C/C++ 语言程式码转换成机器码的软体,转换后的机器码则由 86Duino CPU 去执行。
volatile 的特别之处在于,它引导编译器从 RAM 中载入变数而不是从暂存器(暂存器是程式暂时储存与调出变数的空间)。在某些情况下将变数数值存到暂存器可能会不准确。
如果变数可能会被其他同时处理的执行绪修改时,应该宣告成 volatile (例如:中断副程式和使用者程式共用的全域变数)。在 86Duino 中只有控制中断 (interrupt) 的中断副程式 (interrupt service routine) 有关的地方可能会发生这种情况。
范例
// 当 LED 的开关触发时,切换 pin 脚状态 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; }
See also
- attachInterrupt()
本页由热血青年 LBU 译自英文版。
The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.