D语言编写单片机应用需要用到的技巧
功能:
Volatile 关键字实现,
volatile 关键字
D语言(版本:2.094之前)中并未实现内置volatile关键字,它提供的标准库中有相关的实现.
在单片机编程中volatile是不可缺少的关键字,这个关键字是确保声明定义的有效性.,我们建立一个struct模板来方便实现这个功能.
struct Volatile(T) {
import core.volatile; // 加载标准苦
T raw; // 通过模板传入的T来建立变量
nothrow: // 以下代码无异常抛出
//以下代码通过重载实现
A opAssign(A)(A a) { volatileStore(&raw, a); return a; }
immutable(T) load() @property { return volatileLoad(&raw); }
alias load this;
void opOpAssign(string OP)(const T rhs) {
auto v = volatileLoad(&raw);
mixin("v " ~ OP ~ "= rhs;");
volatileStore(&raw, v);
}
}
应用方法:
Volatile!uint t1; //直接声明
auto t2 = Volatile!uint(60); //声明并且赋值
auto t3 = cast(Volatile!uint*)0x335; //声明在指定地址上
文档说明
2021年1月11日 添加Volatile模板及注释.