我正在寻找一种创建“无动作”计时的好方法(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;
}
你有什么主意吗 ?
提前谢谢。
定义这样一个宏的一般方法是:
#define DELAY(amount) \
do { \
/* method of delay */ \
} while (0)
在你的情况下:
#define DELAY(amount) \
do { \
int i; \
for (i = 0; i < amount; ++i); \
} while (0)
如果您希望在某些循环迭代方面引入延迟,您可以使用
#define INTRODUCE_DELAY(count) for(int i = 0; i < count; i++);
您可以通过编译器开关修改它以调用sleep
类似us
的,如下所示。如果你不能i
在for
循环中声明,我们可以定义一个小函数(可能inline
如下所示
#ifdef WIN32
void mysleep(int count)
{
int i;
for(i = 0; i < count; i++);
}
#define INTRODUCE_DELAY(count) mysleep(count);
#else
#define INTRODUCE_DELAY(count) sleep(count);
#endif
我认为你需要睡眠功能,(虽然只能在 unix/linux 上工作)
#include <unistd.h>
#define DELAY(SEC) sleep(SEC)
windows中一定有类似的功能。