⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 volatile.cpp

📁 Think in C++ 第二版源码
💻 CPP
字号:
//: C08:Volatile.cpp

// From Thinking in C++, 2nd Edition

// Available at http://www.BruceEckel.com

// (c) Bruce Eckel 1999

// Copyright notice in Copyright.txt

// The volatile keyword



class Comm {

  const volatile unsigned char byte;

  volatile unsigned char flag;

  static const int bufsize = 100;

  unsigned char buf[bufsize];

  int index;

public:

  Comm();

  void isr() volatile;

  char read(int index) const;

};



Comm::Comm() : index(0), byte(0), flag(0) {}



// Only a demo; won't actually work

// as an interrupt service routine:

void Comm::isr() volatile {

  if(flag) flag = 0;

  buf[index++] = byte;

  // Wrap to beginning of buffer:

  if(index >= bufsize) index = 0;

}



char Comm::read(int index) const {

  if(index < 0 || index >= bufsize)

    return 0;

  return buf[index];

}



int main() {

  volatile Comm Port;

  Port.isr(); // OK

//!  Port.read(0); // Error, read() not volatile

} ///:~

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -