Функция записи требует unistd.h в Unix, а как насчет окон?

Я перешел с компьютера Linux на Windows, и у меня возникли проблемы с компиляцией кода, потому что эти две ОС не используют одни и те же файлы заголовков.

Поскольку unistd.h явно не включен, Visual C не знает, какие функции read(), write(), close(), socklen_t() и bzero(). Кто-нибудь может мне с этим помочь?

Я погуглил это: Есть ли замена для unistd.h для Windows (Visual C)?

Я понятия не имею, как работает unistd.h, и не знаю, как кодировать свой собственный. Может кто-нибудь связать меня с одним?


person stockoverflow    schedule 16.04.2011    source источник
comment
Что не так с заменой unistd.h в принятом ответе на связанный вопрос?   -  person AShelly    schedule 26.04.2011


Ответы (2)


Лучше всего использовать MinGW для компиляции программы, которая включает (среди прочего) GCC (и его заголовки ). Попробуйте установить это, а затем скомпилировать свою программу и посмотреть, все ли работает нормально.

person Rafe Kettler    schedule 16.04.2011
comment
Извините, я новичок в Visual C ... Я компилировал свой код через его отладку (F5), как мне изменить его на Visual C, чтобы вместо этого использовать MinGW? - person stockoverflow; 16.04.2011
comment
@stockoverflow Я не знаю, как интегрировать Visual Studio с MinGW. Вы компилируете программы с помощью MinGW, как и в Linux - из командной строки, обычно используя те же команды. - person Rafe Kettler; 16.04.2011
comment
Хорошо, командная строка такая же, как терминал в Linux, верно? - person stockoverflow; 16.04.2011
comment
@stockoverflow не совсем - некоторые команды в Windows отличаются, и многих программ GNU / Linux нет, но команды для компиляции с помощью MinGW такие же, как и для GCC в Linux. Вы не должны столкнуться с какими-либо проблемами, используя командную строку Windows. - person Rafe Kettler; 16.04.2011

read, write и close находятся в <io.h>, точно так же, как они традиционно были в Unix.

Навскидку, я вообще не знаю, чтобы bzero был включен в Windows - если вы вообще заботитесь о переносимости, вы обычно хотите использовать вместо этого memset.

socklen_t обычно не используется в Windows - большинство вещей, которые были бы socklen_t в Unix, используют либо size_t, либо int в Windows (socklen_t в Unix в настоящее время - это еще одна ссылка на тот же базовый тип, что и size_t, добавленная на случай, если когда-нибудь это может пригодиться - - ака, решение в поисках проблемы).

person Jerry Coffin    schedule 16.04.2011