|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Alexei Dets 2:5020/400 02 Aug 2002 19:49:04 To : Aleksey Trufanov Subject : Re: Компилер не находит strndup() -------------------------------------------------------------------------------- Hi! Aleksey Trufanov wrote: >> Реальная проблема скорее всего в том, что string.h включается где-то еще >> раньше в твоей программе, _до_ определения _GNU_SOURCE. Здесь он >> включается уже второй раз и просто игнорируется. > > Да нет же! Сейчас вот так: > > #define __USE_GNU > #include <string.h> > > Всё работает. Когда на месте __USE_GNU было _GNU_SOURCE (как указано _Сейчас_ работает. Ты пользуешься _недокументированным_ макросом, который предназначен _исключительно_ для внутреннего использования в glibc. Посмотри в /usr/include/features.h: #ifdef _GNU_SOURCE # define __USE_GNU 1 #endif > в man strndup) -- не работало. Две вышеприведенные строки встречаются > в исходнике ТОЛЬКО ОДИH РАЗ. Hу и что? Тебе не приходило в голову, что string.h мог быть включен другим системным инклудом еще до того, как ты его явно включил? Вот, из info libc цитата (там, кстати, все эти макросы отлично описаны): You should define these macros by using `#define' preprocessor directives at the top of your source code files. These directives _must_ come before any `#include' of a system header file. It is best to make them the very first thing in the file, preceded only by comments. You could also use the `-D' option to GCC, but it's better if you make the source files indicate their own meaning in a self-contained way. Алексей -- Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5 * Origin: InfoDesk, S.A. (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/648802f30558.html, оценка из 5, голосов 10
|