0

我正在寻找一种创建“无动作”计时的好方法(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;
}

你有什么主意吗 ?

提前谢谢。

4

3 回答 3

3

定义这样一个宏的一般方法是:

#define DELAY(amount)       \
do {                        \
    /* method of delay */   \
} while (0)

在你的情况下:

#define DELAY(amount)             \
do {                              \
    int i;                        \
    for (i = 0; i < amount; ++i); \
} while (0)
于 2013-04-12T16:02:52.890 回答
1

如果您希望在某些循环迭代方面引入延迟,您可以使用

#define INTRODUCE_DELAY(count) for(int i = 0; i < count; i++);

您可以通过编译器开关修改它以调用sleep类似us的,如下所示。如果你不能ifor循环中声明,我们可以定义一个小函数(可能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
于 2013-04-12T15:48:58.327 回答
0

我认为你需要睡眠功能,(虽然只能在 unix/linux 上工作)

#include <unistd.h>
#define DELAY(SEC) sleep(SEC)

windows中一定有类似的功能。

于 2013-04-12T15:49:56.423 回答