首先,通过“ windows unistd.h”,我的意思是这里的示例:"is there a replacement for unistd.h for windows?
我试图按摩knetfile.c,以便可以为Windows64编译它。我的第一步是删除unistd.h包含,因为它在Windows上不可用。
严重错误C1083:无法打开包含文件:'unistd.h':没有此类文件或目录
所以,我想我会掷骰子,上面有直接插入的替换物。但是,这显然行不通,因为我现在收到了一系列的错误和警告:
knetfile.c(189):错误C2036:“无效*”:未知大小
knetfile.c(236):警告C4267:“功能”:从“大小_t”转换为“整数”,可能丢失数据
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:“无效*”:未知大小
knetfile.c(537):警告C4244:“功能”:从“ int64_t”转换为“ long”,可能丢失数据
knetfile.c(544):警告C4244:“返回”:从“ int64_t”转换为“ off_t”,可能丢失数据
knetfile.c(553):警告C4244:“返回”:从“ int64_t”转换为“ off_t”,可能丢失数据
knetfile.c(565):警告C4244:“返回”:从“ int64_t”转换为“ off_t”,可能丢失数据
我认为缺少一小组宏或typedef可以清除此问题。有什么建议么?
最佳答案
第一个错误
knetfile.c(189):错误C2036:“无效*”:未知大小
是完全正确的,并且代码是错误的。头文件的修补工作不会改变您不能对void指针执行指针算术的事实。
第五个错误
knetfile.c(335):错误C2143:语法错误:缺少';'在“ const”之前
是正确的。在C语言中,所有声明必须在任何语句之前的块开头。可能随着C99改变了,但是Microsoft编译器不支持C99。