2010-08-23 125 views
0

來自here的消息稱它應該可以在iPhone上工作。我曾與它合作,但我得到2錯誤,說msleep()是未申報的。我試圖包括unistd.h,time.h和許多其他的。我怎樣才能使這個工作?謝謝。msleep聲明在哪裏?

+1

我可以問你是否明顯地在整個系統頭文件夾中搜索了文本字符串,而不是猜測幾個字段? – Mawg 2010-08-23 06:06:42

+0

還是你谷歌? http://nfosolutions.com/doc_link/C/a_doc_lib/libs/basetrf1/msleep.htm – Mawg 2010-08-23 06:07:44

+0

公平性對於AIX來說 - BSD與BSD具有相同的含義:http://www.unix.com/man-page/all/9/msleep /(儘管給出達爾文是基於BSD的,我會放棄這些)。 – Rup 2010-08-23 09:22:57

回答

4

該鏈接線程中沒有任何內容說明msleep可用。原作者,bagusflyer,實際執行他們自己的msleep,聲明:

對不起。也許我錯過了我的代碼中的東西。這裏是我的msleep:

#include <sys/time.h> 
void msleep (unsigned int ms) { 
    int microsecs; 
    struct timeval tv; 
    microsecs = ms * 1000; 
    tv.tv_sec = microsecs/1000000; 
    tv.tv_usec = microsecs % 1000000; 
    select (0, NULL, NULL, NULL, &tv); 
} 

然而,你應該小心使用的代碼,因爲我認爲,從內存,即select()是中斷的。

5

msleep()是來自早期BSD的非標準工件,在clock_nanosleep()nanosleep()之前將其製作爲POSIX。

這是不可移植的。在某些系統上,默認情況下是可用的 - 在其他系統上,必須使用_BSD_SOURCE定義來編譯代碼。

iPhone是Mac OS X的遠處親戚,它與NeXT遙遠,它與BSD 4.x非常遙遠。所以這個函數可能會在某個頭文件/庫中停留,但是你不應該使用它。如果內存爲我服務,請檢查NSThreadsleepForTimeInterval:靜態方法。

1

也許你可以使用usleep()。它也在unistd.h中。