Во-первых, под «windows unistd.h» я имею в виду пример, расположенный здесь: «есть ли замена для unistd.h для windows?
Я пытаюсь сделать массаж knetfile.c так что его можно скомпилировать для windows64. Моим первым шагом было удаление включения unistd.h, потому что оно недоступно в Windows.
фатальная ошибка C1083: не удается открыть файл включения: ‘unistd.h’: такого файла или каталога нет
Итак, я решил бросить кости с заменой вставки, связанной с выше. Тем не менее, это явно не работает, так как теперь я получаю целый ряд ошибок и предупреждений:
knetfile.c (189): ошибка C2036: ‘void *’: неизвестный размер
knetfile.c (236): предупреждение C4267: «функция»: преобразование из «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: «функция»: «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: «функция»: преобразование из «int64_t» в «длинный», возможная потеря данных
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.
Других решений пока нет …