定时的宏问题

时间:2013-04-12 15:41:32

标签: c macros

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

你有什么想法吗?

先谢谢。

3 个答案:

答案 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中必须有类似的功能。