对于一篇论文,我正在寻找一个使用 volatile 变量的真实C 函数。这本身并不难找到,但我正在寻找一个函数,其中 volatile 变量的值必须在函数执行过程中发生变化,以便到达函数的特定分支。像这样的东西:
typedef struct {
unsigned :6;
unsigned FLAG1 :1;
unsigned FLAG2 :1;
} __attribute__ ((packed)) REGISTER;
volatile REGISTER * io_ = 0x1234;
int write_to_io()
{
while (io_->FLAG1) {};
//io_->FLAG1 is now 0
io_->FLAG2 = 1;
sleep(10);
if (io->FLAG1)
return 1; //io->FLAG1 has changed from 0 to 1
else
return 0; //io->FLAG1 has not changed
}
如果在函数执行期间结构的不同位发生变化就足够了,但我的主要标准是,对于要到达的某个分支,易失性变量的值在函数执行期间发生变化。
我会非常感谢任何现实生活中的例子。我无法在网上找到很多使用 volatile 的示例。