まあ、これはばかげたものでなければなりません。以下は、Cで単純化できないコードです。「スリープへの未定義の参照」と言ってコンパイルすることはできません。しかし、私は必要なすべてのシステムヘッダーを含めると思います...
#include <stdio.h>
#include <unistd.h>
int main()
{
printf("Test starts.\n");
sleep(1);
printf("Test ends.\n");
return 1;
}
上部でこれを試してください:
_#ifdef __unix__
# include <unistd.h>
#Elif defined _WIN32
# include <windows.h>
#define sleep(x) Sleep(1000 * (x))
#endif
_
このコードを使用すると、まったく同じことを行う2つの異なる関数を同じ名前で使用できます。また、さまざまなプラットフォームでコンパイルされます。
また、_(x)
_引数を括弧で囲むと、誰かがこのsleep(10+10)
のように呼び出した場合でも、遅延が正しくなります。
Windowsオペレーティングシステムで実行している場合は、プログラムに_windows.h
_ヘッダーファイルをインクルードし、sleep()
をSleep()
に変更します。
問題は消えるでしょう。
これがお役に立てば幸いです。