[英]Is there a replacement for unistd.h for Windows (Visual C)?
[英]Porting klib's knetfile.c|h to windows, when I sub in the “windows unistd.h”, I get error C2036: 'void *' : unknown size
首先,通過“windows unistd.h”,我的意思是這里的例子: “是否有替換unistd.h for windows?
我試圖按摩knetfile.c,以便它可以編譯為Windows64。 我的第一步是刪除unistd.h include,因為它在Windows上不可用。
致命錯誤C1083:無法打開包含文件:'unistd.h':沒有這樣的文件或目錄
所以,我想我會用上面鏈接的替代品擲骰子。 但是,這顯然不起作用,因為我現在得到一系列錯誤和警告:
knetfile.c(189):錯誤C2036:'void *':未知大小knetfile.c(236):警告C4267:'function':從'size_t'轉換為'int',可能丟失數據
knetfile.c(264):警告C4244:'=':從'SOCKET'轉換為'int',可能丟失數據
knetfile.c(271):警告C4244:'=':從'SOCKET'轉換為'int',可能丟失數據
knetfile.c(300):警告C4244:'=':從'__int64'轉換為'int',可能會丟失數據
knetfile.c(335):錯誤C2143:語法錯誤:缺少';' 'const'之前
knetfile.c(336):錯誤C2065:'p':未聲明的標識符
knetfile.c(336):錯誤C2100:非法間接
knetfile.c(336):錯誤C2065:'p':未聲明的標識符
knetfile.c(337):錯誤C2065:'p':未聲明的標識符
knetfile.c(337):錯誤C2100:非法間接
knetfile.c(337):錯誤C2065:'p':未聲明的標識符
knetfile.c(337):錯誤C2100:非法間接
knetfile.c(337):錯誤C2065:'p':未聲明的標識符
knetfile.c(338):錯誤C2065:'p':未聲明的標識符
knetfile.c(338):警告C4047:'function':'const char *'的間接級別與'int'不同
knetfile.c(338):警告C4024:'strtoint64':正式和實際參數1的不同類型
knetfile.c(378):警告C4244:'=':從'__int64'轉換為'int',可能會丟失數據
knetfile.c(410):警告C4244:'=':從'SOCKET'轉換為'int',可能丟失數據
knetfile.c(430):警告C4244:'初始化':從'int64_t'轉換為'off_t',可能丟失數據
knetfile.c(520):錯誤C2036:'void *':未知大小
knetfile.c(537):警告C4244:'function':從'int64_t'轉換為'long',可能丟失數據
knetfile.c(544):警告C4244:'return':從'int64_t'轉換為'off_t',可能會丟失數據
knetfile.c(553):警告C4244:'return':從'int64_t'轉換為'off_t',可能會丟失數據
knetfile.c(565):警告C4244:'return':從'int64_t'轉換為'off_t',可能會丟失數據
我想有一小組宏或類型的缺失可以解決這個問題。 有什么建議么?
第一個錯誤
knetfile.c(189):錯誤C2036:'void *':未知大小
是完全正確的,代碼是錯誤的。 沒有任何修改頭文件會改變你無法對void指針進行指針運算的事實。
第五個錯誤
knetfile.c(335):錯誤C2143:語法錯誤:缺少';' 'const'之前
也是對的。 在C中,所有聲明必須在任何語句之前的塊的開頭。 可能會因C99而改變,但Microsoft編譯器不支持C99。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.