ТС прости, но я хочу это сделать.> Скорее это ты тут обнаруживаешь незнание того, что такое XSI. Отвечаю развёрнуто.
> mknod не может быть никаким 'XSI extension', как ты предполагал в первом
> сообщении. Это никакое не расширение апи X/Open System Interface. Мкнод -
> это и есть юникс, грубо говоря, сколько лет системе - столько
> и ему!
Молодец, ГТО. Только речь тут о -std=c99, с коим все слегка не так.
> SuS я читал не однократно, и продолжаю
> читать, и далеко не первый год, но с потребностью в данном
> макросе я сталкиваюсь впервые.
Там общей информации чуток, остальная справочная. Чо ты там годами вычитываешь?? )))
Потребность в макросе всегда была (опять же при -std=c99).
> Но отлично - я погуглил 10 минут,
> и теперь знаю больше тебя, и более того - знаю, как
> ты написал своё сообщение.
Без комментариев...
> Где-то ты увидал этот дефайн, обнаружил что он помогает, но как
> - понять так и не смог.
Этот дефайн, с помощью окружающих #if и #endif, разрешает в инклудах нужные объявления. Или будешь пугать меня магическими дефайнами?
> В man 2 mknod от
> glibc упомянут только лишь как один из вариантов _XOPEN_SOURCE >= 500.
> Один из 4 макросов, которые дадут доступ к данному апи в
> glibc.
> а 600 соответствует SuSv3. То есть бейс интерфейс 2001го (включая мкнод) +
> расширения.
> Того же результата можно добиться с _BSD_SOURCE, с _SVID_SOURSE, с
> _XOPEN_SOURCE&& _XOPEN_SOURCE_EXTENDED, опять же - в конкретном случае реализации glibc.
Первые два--это способ объяснить glibc со товарищи, что эти сорцы писали, мм.. так сказать не совсем с оглядкой на переносимость, а с оглядкой на конкретную систему, прям как ты любишь. Хвала всем богам, различия часто несущественны или отсутствуют, что, например, позволяет компилить нативные бсдовые сорцы без изменений. При чем тут официально стандартизированные интерфейсы? Кстати C99 не включает mknod, угадай почему.
Если ты не заметил, ТС старается ориентироваться не на glibc, а на посикс. С таким подходом ему не придется лопатить сорцы при переходе на другую стандартную библиотеку; главное, чтобы она умела POSIX+XSI.
> Никто не гарантирует работоспособность данных макросов при использовании других реализаций
> libc.
Ага, щас вот кто-нибудь как напииишет такую libc, что она не будет совместима ни с другой libc, ни с существующими сорцами, ни с POSIX, ни с SUS. Боюсь-боюсь.
> Стандарт - это стандарт. Реализация - это реализация. Теория -
> практика. Мухи и котлеты.
Чушь и бред. Пруф в [1]. Там же описано, как mknod относится к C99, достаточно прочитать абзац со словами "File System Interface", перейти по ссылке, потом перейти на "Making Special Files".
Ты правда считаешь, что не стоит делать так, как написано в официальном документе, но вместо этого стоит копаться во внутренностях /usr/include, ища там ошибки, или использовать системные символы, начинающиеся с "__"? Можешь не утруждать себя ответом, мне не особо интересно.
[1] http://www.gnu.org/software/libc/manual/html_node/POSIX.html