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.