我正在寻找一种很好的方法来创建一个“无动作”的时间(CPU无用的时间操作)。
在这里解释我的问题是我想要更改为宏的代码:
int main (void)
{
int i=0;
printf("Start\r\n");
for(i=0;i<1000;i++); //LINE TO CHANGE TO A MACRO
printf("Delayed trace\r\n");
return 0;
}
你有什么想法吗?
先谢谢。
答案 0 :(得分:3)
定义这样一个宏的一般方法是:
#define DELAY(amount) \
do { \
/* method of delay */ \
} while (0)
在你的情况下:
#define DELAY(amount) \
do { \
int i; \
for (i = 0; i < amount; ++i); \
} while (0)
答案 1 :(得分:1)
如果您希望在某些循环迭代方面引入延迟,可以使用
#define INTRODUCE_DELAY(count) for(int i = 0; i < count; i++);
您可以通过编译器开关对其进行修改,以调用类似sleep
的{{1}},如下所示。如果您无法在us
循环中声明i
,我们可以定义一个小函数(可能是for
,如下所示
inline
答案 2 :(得分:0)
我认为你需要睡眠功能,(仅在unix / linux上工作)
#include <unistd.h>
#define DELAY(SEC) sleep(SEC)
Windows中必须有类似的功能。