注:当时笔记收录有遗录,后三个函数回值都是原来的值。
volatil限定符告诉编译器不要对这个变量进行任何形式的优化,而是始终的从变量的内存中读取变量的值。
该变量可能被应用程序以外 的代码所修改,比如操作系统、硬件、或者一个并发执行的线程对其的值进行修改,就要使这个限定符。
volatil BOOL V1=NULL;
如果有的时候不给BOOL(假如)加上volatil限定,编译器可能对c++代码进行优化。这个优化中,编译器把BOOL变量的值放入寄存器中,
这个操作只需要进行一次。然后它重复对CPU寄存器的值进行测试。与每次都从变量所在内存空间中取地变量的值来说,这样有更好的性能。加上volatile限定可以确保每一个成员都是从内存地址中读取的。详细见 《windows核心编程》206页具体的解释和用法。