首先,通过“windows unistd.h”,我的意思是位于此处的示例:"is there a replacement for 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',可能会丢失数据
我想有一小组宏或typedef缺失会清除它。有什么建议吗?
答案 0 :(得分:2)
第一个错误
knetfile.c(189):错误C2036:'void *':未知大小
简单正确,代码错误。没有任何修改头文件会改变你无法对void指针进行指针运算的事实。
第五个错误
knetfile.c(335):错误C2143:语法错误:缺少';'在'const'之前
也是对的。在C中,所有声明必须在任何语句之前的块的开头。可能会因C99而改变,但Microsoft编译器不支持C99。