Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / где все же описываются функции из .h-ек / 25 сообщений из 68, страница 1 из 3
31.08.2020, 09:04
    #39994002
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
я не понимаю. и нарыть в это интернете не получается и в книге не описано. вот допустим есть библиотека math.h , я её инклужу и никаких файлов не линкую с моим проектом. и этого достаточно: я могу использовать всякие там синусы , логарифмы , возведение в степень.
вопрос: где описываются эти всякие функции синусы , косинусы. Ведь провалившись в math.h реализаций этих функций мы не увидим. Оно и понятно ведь это заголовочный файл, но тогда где описаны эти функции ? Если эти функции описаны в стандартной библиотеке тогда зачем мне инклудить тогда math.h ????
...
Рейтинг: 0 / 0
31.08.2020, 10:45
    #39994011
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
Опции линкера подключают библиотеки. В том числе и math. И в каждом компилляторе их названия могут отличаться.
...
Рейтинг: 0 / 0
31.08.2020, 10:47
    #39994012
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
andron81,

Разработчики компилятора написали math.c, откомпилировали его в виде библиотеки.
Эта библиотека по умолчанию подключена к вашему проекту. Там эти функции.

Вам отдали math.h. И откомпилированный файл библиотеки.

Полная аналогия с тем что делаете вы.
...
Рейтинг: 0 / 0
31.08.2020, 10:57
    #39994014
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
mayton,
Его любознательнось хочет узнать, в какой *.so/dll лежит реализация квадратного корня.
...
Рейтинг: 0 / 0
31.08.2020, 10:59
    #39994015
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
Для gcc - это будет опция -lm, и дальше можно поискать что фактически слинковалось в бинарник

Код: plaintext
1.
$ gcc ..... -lm
...
Рейтинг: 0 / 0
31.08.2020, 11:04
    #39994017
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
Для линукс файл лежит предположительно тут. (Strace показывает)

Код: plaintext
1.
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
...
Рейтинг: 0 / 0
31.08.2020, 11:07
    #39994018
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
"man ldd"?
Или слишком примитивно?
...
Рейтинг: 0 / 0
31.08.2020, 11:07
    #39994019
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
Еще вариант
- скомпилить два бинарника. С либой и без.
- потом изучать
ldd имя-бинарника
...
Рейтинг: 0 / 0
31.08.2020, 11:10
    #39994021
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
Можно самому функцию синуса написать.
...
Рейтинг: 0 / 0
31.08.2020, 11:22
    #39994026
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
mayton
Можно самому функцию синуса написать.


дело не в синусе и не в math.h
просто если речь коснется написания своей библиотеке подобно math.h
да даже и такой задачи тоже пока нет. просто хотелось бы понять. как устроены заголовочные файлы.
...
Рейтинг: 0 / 0
31.08.2020, 11:27
    #39994029
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
Заголовочные файлы - это пережиток глубокого прошлого кибернетики. Изучая его - ты будешь изучать
историю ЭВМ и первых компилляторов. Тебе оно надо? Просто пользуйся и все.
...
Рейтинг: 0 / 0
31.08.2020, 11:28
    #39994030
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
petrav
andron81,

Разработчики компилятора написали math.c, откомпилировали его в виде библиотеки.
Эта библиотека по умолчанию подключена к вашему проекту. Там эти функции.

Вам отдали math.h. И откомпилированный файл библиотеки.

Полная аналогия с тем что делаете вы.


мне пока хотя бы представление иметь как это делается.
просто выясняется , что помимо какого - нибудь заголовочного файла myheader.h ещё имеется приложение в виде myheader.c
...
Рейтинг: 0 / 0
31.08.2020, 11:37
    #39994033
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
mayton
Заголовочные файлы - это пережиток глубокого прошлого кибернетики.
"Primary source", вроде, только в IBM Visual Age for C/C++ v4.0 были (середина девяностых). Как-то не взлетело. Так какой-же оно пережиток?
...
Рейтинг: 0 / 0
31.08.2020, 11:46
    #39994038
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
mayton,

я попытаюсь объяснить зачем мне это . я зануда прорабатываю упражнения K&R и исходники тоже по макс. досконально разбираю.
Они там переписывают как бы stdin.h
Подрузамевается , что нижеуказанный фрагмент это кусок типичного заголовочного файла например stdin.h

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
#define NULL О
#define EOF (-1)
#define BUFSIZ 1024
#define OPEN_MAX 20 /* max число одновременно открытых файлов */
typedef struct _iobuf {
 int cnt; /* количество оставшихся символов */
 char *ptr; /* позиция следующего символа */
 char *base; /* адрес буфера */
 int flag; /* режим доступа */
 int fd; /* дескриптор файла */
} FILE;
extern FILE _iob[OPEN_MAX];
#define stdin (&iob[0])
#define stdout (&_iob[1])
#define stderr (&_iob[2])
enum _flags {
 _READ =01, /* файл открыт на чтение */
 _WRITE = 02, /* файл открыт на запись */
 _UNBUF = 04, /* файл не буферизуется */
 _EOF = 010, /* в данном файле встретился EOF */
 _ERR = 020 /* в данном файле встретилась ошибка */
};
int _fillbuf(FILE *);
int _flushbuf(int, FILE *);
#define feof(p) (((p)->flag & _EOF) != 0)
#define ferror(p) (((p)->flag & _ERR) != 0)
#define fileno(p) ((p)->fd)
#define getc(p) (--(p)->cnt >= 0 ? (unsigned char) *(p)->ptr++ : _fillbuf(p))
#define putc(x.p) (--(p)->cnt >= 0 ? *(p)->ptr++ = (x) : _flushbuf((x),p))
#define getchar() getc(stdin)
#define putchar(x) putc((x), stdout)



а потом реализуется fopen и _fillbuf. Их исходники не привожу, но они есть в книге .
и далее на этой основе требуется переработать fopen и _fillbuf.

Вот и как я должен перерабатывать. я выпутался так , что я подключаю этот вышеуказанный заголовок, а fopen и _fillbuf реализую в файле add.c и подликовываю с основным файлом (там где у меня функция main).
Но я думал, что все проще , а не проще.
это всё устарело, да, но упражнения ведь я хочу выполнить...
...
Рейтинг: 0 / 0
31.08.2020, 11:51
    #39994041
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
Для современного компиллятора нет никакой мотивации создавать 2 артифакта. Хедер и реализацию.
Мета-описательные возможности - безграничны. И размерами мы слава богу не ограничены (не 64 килобайта
у нас на десктопах слава богу).

Поэтому я и утверждаю в топике что хедеры - это пережиток старины.
...
Рейтинг: 0 / 0
31.08.2020, 11:52
    #39994042
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
andron81

я попытаюсь объяснить зачем мне это . я зануда прорабатываю упражнения K&R и исходники тоже по макс. досконально разбираю.
Они там переписывают как бы stdin.h

Может не надо этого делать? Какого года эти "упражнения"?
...
Рейтинг: 0 / 0
31.08.2020, 11:53
    #39994044
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
mayton,

немножко осталось ))) штук 5 от силы . последняя глава :)
80 какого-то года эти упражнения )))))))))))
...
Рейтинг: 0 / 0
31.08.2020, 11:54
    #39994046
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
andron81,

>имеется приложение в виде myheader.c
= это не приложение.
Прежде чем код писать, разберись о чем мы?
Бинарник + либы.so?
Или о чем ты?
...
Рейтинг: 0 / 0
31.08.2020, 11:55
    #39994048
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
mayton,
Ну, хедеры или подключение либы не суть ведь.
...
Рейтинг: 0 / 0
31.08.2020, 11:55
    #39994049
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
PetroNotC Sharp
andron81,

>имеется приложение в виде myheader.c
= это не приложение.
Прежде чем код писать, разберись о чем мы?
Бинарник + либы.so?
Или о чем ты?



22189769
...
Рейтинг: 0 / 0
31.08.2020, 11:56
    #39994050
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
andron81
mayton,

немножко осталось ))) штук 5 от силы . последняя глава :)
80 какого-то года эти упражнения )))))))))))

Вот ты чудак. Подозреваю что дедушки Денис и Брайан писали даже не про С++ а про С.
...
Рейтинг: 0 / 0
31.08.2020, 11:57
    #39994051
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
mayton
andron81
mayton,

немножко осталось ))) штук 5 от силы . последняя глава :)
80 какого-то года эти упражнения )))))))))))

Вот ты чудак. Подозреваю что дедушки Денис и Брайан писали даже не про С++ а про С.


разумеется под Си. но чуть чуть ведь осталось )
...
Рейтинг: 0 / 0
31.08.2020, 11:58
    #39994052
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
andron81,
> это всё устарело, да, но упражнения ведь я хочу выполнить...
== тогда сам, в одиночку. Немного желающих в старине копаться. Один, полтора землекопа).
...
Рейтинг: 0 / 0
31.08.2020, 11:58
    #39994053
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
PetroNotC Sharp
mayton,
Ну, хедеры или подключение либы не суть ведь.

Вот мы добрались до самого главного. До гвоздя программы. Или до десертного блюда.

Кто и где гарантирует что хедер соответствует либе? Тоесть где в этой системе координат
будет декларировано что ЭТОТ хедер именно от этой либы?
...
Рейтинг: 0 / 0
31.08.2020, 11:58
    #39994054
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где все же описываются функции из .h-ек
andron81
PetroNotC Sharp
andron81,

>имеется приложение в виде myheader.c
= это не приложение.
Прежде чем код писать, разберись о чем мы?
Бинарник + либы.so?
Или о чем ты?



22189769

22189785
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / где все же описываются функции из .h-ек / 25 сообщений из 68, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]