2011-09-04 43 views
1

我一直得到這個錯誤: c:\ cygwin \ usr \ include/cygwin/socket.h:55:3:錯誤:在'__uid32_t'之前的預期說明符 - 限定符列表cygwin和eclipse的sockets.h問題

我的代碼是mininmal,仍然無法編譯:

#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <sys/socket.h> 

int main(void) { 
    puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */ 
    return EXIT_SUCCESS; 
} 

我已經包括C:\ Cygwin的的\ usr \包括編譯器到C路徑和鏈接器:\ Cygwin的的\ usr \ lib中

請告知

+0

我確定它是否相關,但如果你依賴gcc 4.3版本,那麼編譯器中的網絡代碼會有一個錯誤。 –

+0

我剛剛檢查使用4.5從明確... – JasonKeef

回答

3

C:\cygwin\usr\include下的頭和C:\cygwin\usr\lib下的庫適用於Cygwin環境 - 這意味着它們應該通過它們的Cygwin路徑/usr/include/usr/lib來引用。

我沒有使用mingw,但我不認爲它是Cygwin的一部分,我不希望它能夠使用Cygwin的頭文件和庫。

如果你打算使用mingw,你應該使用隨它一起安裝的頭文件和庫。不要指定任何Cygwin相關的目錄。或者你可以使用Cygwin的gcc(這是可選的;你將不得不用setup.exe來安裝它)。在這種情況下,您可以從命令行運行gccmake。我不確定Cygwin和Eclipse是否很好地結合在一起。

+0

我很確定Eclipse支持Cygwin和「應該」自動識別它,雖然我沒有得到那個工作。 – lopsided98

0

我知道這個問題已經過時了,而且我正在使用更新的版本,但我遇到過類似的問題,並且已通過將#include <sys/socket.h>移至#include <sys/types.h>以上一行來解決。

types.h中的某些東西似乎阻止socket.h(不知道如何)。希望我對原因有更多的細節,但希望解決方案能夠幫助一些人。