2015-11-30 1 views
1

Я экспериментировал с linux IPC после this tutorial и придумал следующий вопрос.Семафор: почему sembuf определяется в sem.h, но semun - нет?

В примере кода semdemo.c, semun явно определено программистом, а sembuf предопределен в заголовочном файле, на моей машине /usr/include/x86_64-linux-gnu/sys/sem.h. Почему бы нам не переместить определение semun в файл заголовка?

ответ

1

Если это было сделано, это нарушит существующие программы, так как язык C не позволяет удвоить определение типа.

Недопустимое определение типа - это наследие от AT & T, которое невозможно изменить.

Смотрите страницу человека SunOS для semctl():

http://schillix.sourceforge.net/man/man2/semctl.2.html

, который был получен из человека странице AT & T.

+0

Я вижу. Есть ли связанная история/справочная информация в Интернете? – wlnirvana

+0

Благодарим за обновление. Кстати, я только что нашел из APUE 3rd of Richard Stevens, что 'semun' определен в FreeBSD 8.0 (стр. 568). – wlnirvana

+0

И из-за этой ошибки FreeBSD нам нужен специальный тест autoconf для портативного программного обеспечения, которому также нравится работать на FreeBSD. – schily