如何在结构中连续切换布尔值?
我的结构
struct inputval
{
int a;
BOOLEAN b;
}
我需要结构中的布尔值b来切换到每秒的真值。
Ex:
t = 1 , b = true
t = 1.5 b = false
t = 2 , b = true
提前致谢
答案 0 :(得分:1)
正如在评论中已经确定这是关于linux的,这里有一个片段可以做你想要的:
int b = FALSE;
while (1) { // loop forever
b = !b;
sleep(1); // wait for 1 second
}
问题在于这段代码是顺序的:在循环运行时你不能用b做任何事情,没有必要这样做。
第一个解决方案是使您的代码并行。这样做并不容易(至少不可靠),所以让我们找到一个更好的解决方案:UNIX时间戳。
UNIX时间戳表示从1970年1月1日起经过的秒数(不用担心该日期,它有一些历史意义)。 time.h
中有一个名为time
的函数可用于获取UNIX时间戳。您可以检查此值的奇偶校验,而不是每秒都有一个真或假的变量。
因此,上面的代码相当于:
while (1)
b = time(NULL) % 2;
不同之处在于,在这种情况下,您不需要保持循环运行。您只需在程序中的任何一点获得b的值。