求助:volatile BOOL m_bEnd; 中的 volatile 是什么意思?
请教:
CRITICAL_SECTION m_CS;
volatile BOOL m_bEnd;
CRITICAL_SECTION 是什么意思
volatile 是什么意思?
在什么情况下要加这个啊
谢谢!
[解决办法]
当一个对象的值可能会在编译器的控制或监测之外被改变时例如一个被系统时钟更新
的变量那么该对象应该声明成volatile 因此编译器执行的某些例行优化行为不能应用在
已指定为volatile 的对象上.
volatile 限定修饰符的用法同const 非常相似——都是作为类型的附加修饰符例如
volatile int display_register;
volatile Task *curr_task;
volatile int ixa[ max_size ];
volatile Screen bitmap_buf;
display_register 是一个int 型的volatile 对象curr_task 是一个指向volatile 的Task 类对
象的指针ixa 是一个volatile 的整型数组数组的每个元素都被认为是volatile 的bitmap_buf
是一个volatile 的Screen 类对象它的每个数据成员都被视为volatile 的
volatile 修饰符的主要目的是提示编译器该对象的值可能在编译器未监测到的情况下被
改变因此编译器不能武断地对引用这些对象的代码作优化处理
[解决办法]
CRITICAL_SECTION
宏或typedef
[解决办法]
或是结构或是其他什么object
[解决办法]
CRITICAL_SECTION 关键段
查看msdn,或者看Jeffrey Richter的Windows核心编程