Re: _*_SOURCE (Re: gethostname vs pread/pwrite in Linux)
- From
- Alexei Dets ()
- To
- Valentin Nechayev ()
- Date
- 2003-06-06T20:03:54Z
- Area
- RU.UNIX.PROG
From: Alexei Dets <adets@idsk.com>
Hi!
Valentin Nechayev wrote:
> AD> Фишка в том, что получаем нужные определения _только_ на системе с
> glibc.
> [...]
> AD> Вот. А на другой системе он, как ты точно заметил, НИЧЕГО не делает и,
> AD> сл-но, функция запросто возмет и не найдется.
>
> Ну предположим. А решение будет?
Так решение же очень простое - если функция из SUS/Posix - определяй именно
_XOPEN_SOURCE, _POSIX_C_SOURCE и т.п. - вероятность того, что эти макросы
на другой платформе сделают именно то, что нужно, и твоя функция станет
видна, гораздо выше, чем в случае с _GNU_SOURCE. В крайнем случае придется
делать что-то специфичное для данной конкретной платформы - но _GNU_SOURCE
тоже от этого не избавит. Зато при этом не будет возникать соблазна
изначально пользоваться GNU-специфичными расширениями, в т.ч. по незнанию и
ошибке - компилятор просто их не увидит. Т.к. если ими воспользоваться, то
потом этот код наверняка придется переписывать на другой платформе - а
зачем что-то переписывать, если изначально можно было написать более
портабельно? Да, может код получится чуть длиннее или чуть менее красив -
но ведь этот код _все_ _равно_ придется писать...
А использование _GNU_SOURCE аналогично использованию обезболивающих средств
вместо лечения причины самой боли - при этом болезнь (нестандартный и
непортабельный код) будет только прогрессировать. А когда обезболивающие
помогать перестанут (на другой платформе) - вот тут и выясниться, как все
на самом деле запущено :-(
> Такое, чтобы было пригодно для реализации autoconf'ом. И должно включать
Вот с этим есть проблема, т.к. я им не пользуюсь. Я не очень понимаю саму
идею - как можно написать _работающий_ тест на платформу, о которой ты
ничего не знаешь? Т.е. не знаешь даже, что проверять и в каком месте там
грабли разложены? А если знаешь, то _почему_ нельзя обойтись просто
gmake'ом?
Алексей
--
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
--- ifmail v.2.15dev5
* Origin: InfoDesk, S.A. (2:5020/400)