当前位置:  开发笔记 > 编程语言 > 正文

示例C使用volatile变量的函数

如何解决《示例C使用volatile变量的函数》经验,为你挑选了1个好方法。

对于一篇论文,我正在寻找一个使用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的例子.



1> fizzer..:

规范(和可移植)示例处理异步信号.(您可以使用Ctrl-C将SIGINT传递给您的程序).

#include 
#include 

volatile sig_atomic_t quit;

void signal_handler(int sig)
{
    signal(sig, signal_handler);
    quit = 1;
}

int main(void)
{
    signal(SIGINT, signal_handler);
    puts("Hit return to poll quit flag");
    while (!quit) getchar();
    return 0;
}

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有