C - 使用易失性指针
C - use of a volatile pointer
为什么要创建一个 volatile 指针?假设我想要一个指向 volatile 变量的 volatile 指针,以下哪个声明可以完成此操作:
volatile int *pData;
或
volatile int * volatile pData;
Why would one create a volatile pointer?
示例:访问其指针由后台进程更新的数据。
Stuff * volatile VideoFrame;
for (;;) {
Block_Changes();
Stuff MyCopy = *VideoFrame;
Allow_Changes();
Use(&MyCopy);
}
I want a volatile pointer which points to a volatile variable, which of the following declarations would accomplish this:
第2次达到目标。 volatile int * volatile pData;
是一个:
pData as volatile pointer to volatile int
1st volatile int *pData;
是指向易失数据的非易失指针:
pData as pointer to volatile int
volitle
关键字最常用于此上下文中。
使用修饰符“volatile”的一个原因是编译器不会将变量优化为不存在。
使用修饰符 'volatile' 的另一个原因是,当代码引用该变量时,它会访问实际变量而不是某些寄存器中留下的值。
使用修饰符 'volatile' 的另一个原因是当变量值可以在当前程序的控制之外改变时。例如硬件寄存器或当 'interrupt' 更新您的应用程序正在读取的变量时。
为什么要创建一个 volatile 指针?假设我想要一个指向 volatile 变量的 volatile 指针,以下哪个声明可以完成此操作:
volatile int *pData;
或
volatile int * volatile pData;
Why would one create a volatile pointer?
示例:访问其指针由后台进程更新的数据。
Stuff * volatile VideoFrame;
for (;;) {
Block_Changes();
Stuff MyCopy = *VideoFrame;
Allow_Changes();
Use(&MyCopy);
}
I want a volatile pointer which points to a volatile variable, which of the following declarations would accomplish this:
第2次达到目标。 volatile int * volatile pData;
是一个:
pData as volatile pointer to volatile int
1st volatile int *pData;
是指向易失数据的非易失指针:
pData as pointer to volatile int
volitle
关键字最常用于此上下文中。
使用修饰符“volatile”的一个原因是编译器不会将变量优化为不存在。
使用修饰符 'volatile' 的另一个原因是,当代码引用该变量时,它会访问实际变量而不是某些寄存器中留下的值。
使用修饰符 'volatile' 的另一个原因是当变量值可以在当前程序的控制之外改变时。例如硬件寄存器或当 'interrupt' 更新您的应用程序正在读取的变量时。