簡體   English   中英

將klib的knetfile.c | h移植到windows,當我在“windows unistd.h”中輸入時,我收到錯誤C2036:'void *':未知大小

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM