2014-11-06 191 views
0

我嘗試在Xcode 6中創建C庫,但它在代碼usleep(2*1000*1000);上編譯錯誤。爲什麼在Xcode 6中編譯C庫時,C99`中的函數'usleep'的隱式聲明是無效的?

和錯誤日誌

/Users/apk/Desktop/test/test.c:37:9: Implicit declaration of function 'usleep' is invalid in C99

與另一個是/Users/apk/Desktop/test/test.c:37:9: Declaration of 'usleep' must be imported from module 'Darwin.POSIX.unistd' before it is required

的代碼test.c的部分是這樣的:

#include <stdio.h> 
#include <stdlib.h> 
#include <errno.h> 
#include <string.h> 
#include <sys/types.h> 
#include <sys/socket.h> 
#include <netinet/in.h> 
#include <arpa/inet.h> 

int test(const char* dest) { 

    ... 

    usleep(2*1000*1000); 


} 

而且在test.h代碼如下所示:

#ifndef __TEST_H__ 
#define __TEST_H__ 

int test(const char* dest); 

#endif 

發生錯誤是因爲找不到頭文件<netinet/in.h>

還是我錯過了什麼?

在此先感謝。

回答

4

您的編譯器無法找到forward declarationusleep()。您需要添加包含usleep()聲明的頭文件。請添加#include <unistd.h>

此外,您可以檢查man pageusleep()

相關問題