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ます。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
于 2013-04-12T15:48:58.327 に答える
0

スリープ機能が必要だと思います(ただし、unix/linuxでのみ動作します)

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

Windowsにも同様の機能があるはずです。

于 2013-04-12T15:49:56.423 に答える