реклама на сайте
подробности

 
 
6 страниц V  « < 2 3 4 5 6 >  
Closed TopicStart new topic
> Вопросы по C от ламера, В книжках ответа чёта не нахожу
MrYuran
сообщение Apr 23 2009, 15:09
Сообщение #46


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Скопидор @ Apr 23 2009, 16:51) *
А если он не вставляет содержимое системного файла в наш исходник, то почему компилятор не ругается "undefined variable" если мы юзаем переменные из системного файла?
А тогда зачем вообще писать, к примеру, #include <iostream> если препроцессор всё равно не подставляет код из этого библиотечного файла в наш исходник?

В h-файлах обычно определяются константы, макросы, предварительные объявления функций и ссылки на переменные.

То есть, если вы используете в тексте переменные или функции из других модулей, то они должны быть объявлены до использования.
Переменные - как extern, функции - как предварительное описание.

Например, встретив в тексте описание
viod SomeFunc();
компилятор будет спокойно воспринимать вызовы этой функции, подразумевая, что она более подробно описана в другом месте (в другом модуле, библиотеке, а может быть, в текущем, но ниже)


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Guest_Скопидор_*
сообщение Apr 23 2009, 15:18
Сообщение #47





Guests






Цитата(MrYuran @ Apr 23 2009, 19:09) *
В h-файлах обычно определяются константы, макросы, предварительные объявления функций и ссылки на переменные.

Да какая разница что там описано в этих h-файлах (а, кстати, где Вы увидели h в приведённой мной выше строке #include <iostream> ?) если Вы сами же пишите:
Цитата(MrYuran @ Apr 23 2009, 16:27) *
Код из библиотек не подставляется при компиляции, а линкуется при конечной сборке.

Из чего следует, что содержимое этих "h-файлов"не добавляется препроцессором в наш исходник

Сообщение отредактировал Скопидор - Apr 23 2009, 15:23
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Apr 23 2009, 15:38
Сообщение #48


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Все что имеется в h-файлах и не отключается командами препроцессора типа #if, #ifdef включается в исходник и далее компилируется. Что вам в этом процессе не понятно?

Вам надо разобраться с книгой в руках, что такое объявление переменных, функций, классов, и что такое их определение. Например, здесь можно почитатъ : http://it-library.org/articles/?c=6&&a=139.

Каша у вас в голове на сегодняшний день. "Любите книгу - источник знаний"
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 23 2009, 16:57
Сообщение #49


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Скопидор @ Apr 23 2009, 19:18) *
Из чего следует, что содержимое этих "h-файлов"не добавляется препроцессором в наш исходник

содержимое "этих h-файлов" используется компилятором для формирования ссылок на внешние переменные и функции, которые затем цепляются линкером.
При этом в объектный код компилируемого модуля никакой дополнительный код из внешних модулей не вставляется.

Короче, учите матчасть. Лучше всего взять конкретный исходник (желательно грамотно написанный) и разобрать его по косточкам.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Guest_Скопидор_*
сообщение Apr 23 2009, 17:36
Сообщение #50





Guests






Цитата(sergeeff @ Apr 23 2009, 19:38) *
Вам надо разобраться с книгой в руках....
Каша у вас в голове на сегодняшний день. "Любите книгу - источник знаний"

Цитата(MrYuran @ Apr 23 2009, 20:57) *
Короче, учите матчасть.


"P.S. Модераторы и гуру, вы реально помогайте людям кто вообще не в теме, ведб вы когда-то тоже были лохами в программинге, и вас когда-то тоже пинали, мол зелень читай больше книжки. Ведь неприятно? Люди не просят книг, а просят реальной помощи"©-Цитата(Denis89 @ Apr 10 2009, 23:56)





////////////////////////////////////////////


Цитата(sergeeff @ Apr 23 2009, 19:38) *
Все что имеется в h-файлах и не отключается командами препроцессора типа #if, #ifdef включается в исходник и далее компилируется. Что вам в этом процессе не понятно?


Непонятно вот это:

Цитата(MrYuran @ Apr 23 2009, 16:27) *
Код из библиотек не подставляется при компиляции, а линкуется при конечной сборке.


Сообщение отредактировал Скопидор - Apr 23 2009, 17:38
Go to the top of the page
 
+Quote Post
SysRq
сообщение Apr 23 2009, 17:42
Сообщение #51


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Скопидор, уймитесь с форматированием. Весеннее обостение что ли?!

В начале темы было интересно даже. А сейчас отвечать не вижу сымсла, т.к. поиском ответов на вопросы вы лично не озадачиваетесь вовсе.
Go to the top of the page
 
+Quote Post
Guest_Скопидор_*
сообщение Apr 23 2009, 18:31
Сообщение #52





Guests






Цитата(SysRq @ Apr 23 2009, 21:42) *
Скопидор, уймитесь с форматированием. Весеннее обостение что ли?!

Да блин, достало. Вместо того, чтобы конкретно разъяснить начинают отвечать в стиле "RTFM" или "учи матчасть".
Говорите не интересно стало? Но я же даже в названии темы написал, что вопросы от ламера. Вот и пришлось это напомнить а также то, что и отвечающие когда-то тоже были ламерами.

P.S. А зря не хотите ответы. Ваши ответы мне нравились больше всего своей конкретностью, что всё "фтему". Ну не хотите и не надо. Просто не понимаю, почему если человек знает ответ на вопрос почему бы и не ответить? Из-за вредности?
Причина редактирования: Нарушение п.3.3 и 3.4 Правил форума.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Apr 23 2009, 18:46
Сообщение #53


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Скопидор @ Apr 23 2009, 22:31) *
Да блин, достало. Вместо того, чтобы конкретно разъяснить начинают отвечать в стиле "RTFM" или "учи матчасть".
Говорите не интересно стало? Но я же даже в названии темы написал, что вопросы от ламера. Вот и пришлось это напомнить а также то, что и отвечающие когда-то тоже были ламерами.

P.S. А зря не хотите ответы. Ваши ответы мне нравились больше всего своей конкретностью, что всё "фтему". Ну не хотите и не надо. Просто не понимаю, почему если человек знает ответ на вопрос почему бы и не ответить? Из-за вредности?
up

Патаму-чта Вы в самом начале сказали что ответов в книжках не нашли,
но все остальные то нашли...

По раздельной компиляции,
все С(С++) файлы(исходники) собираются отдельно,
#include "..."
#include <...>
обычно означает включить объявления а не определения переменных и функций (исключения конечно есть,
но пока это не Ваш случай)

если Вы включаете по include просто С код, то тогда это просто разбиение кода на несколько файлов,
это дурной тон, но иногда делают и так...

.h(.hpp) файлы библиотек(iostream например) для того и нужны чтоб правильно прилинковать библиотеки
и указать на глобальныее переменные/вызовы функций которые там реализованны.

Так что раздельная компиляция это совсем не миф... smile.gif более того, это просто СТАНДАРТ.
Go to the top of the page
 
+Quote Post
AndreyKeil
сообщение Apr 23 2009, 18:57
Сообщение #54


Частый гость
**

Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930



Цитата(Скопидор @ Apr 24 2009, 00:31) *
Непонятно вот это:

Цитата(MrYuran @ Apr 23 2009, 16:27)
Код из библиотек не подставляется при компиляции, а линкуется при конечной сборке.

А что не понятно? Код в библиотеке уже откомпилирован, т.е. он уже "готовый" (переведён в коды, понятные процессору). Поэтому он линкуется, т.е. присоединяется где надо при сборке.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Apr 23 2009, 19:02
Сообщение #55


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(Скопидор @ Apr 23 2009, 21:31) *
Да блин, достало. Вместо того, чтобы конкретно разъяснить начинают отвечать в стиле "RTFM" или "учи матчасть".
Говорите не интересно стало? Но я же даже в названии темы написал, что вопросы от ламера. Вот и пришлось это напомнить а также то, что и отвечающие когда-то тоже были ламерами.

P.S. А зря не хотите ответы. Ваши ответы мне нравились больше всего своей конкретностью, что всё "фтему". Ну не хотите и не надо. Просто не понимаю, почему если человек знает ответ на вопрос почему бы и не ответить? Из-за вредности?


По-моему десять человек вам уже разъясняли, что к чему. Пояснения уже пошли по второму кругу. Вы внятно скажите, что не понятно. А то вопли молодежи "Не понятно!!!!!!" слегка начинают доставать своей нагловатостью.
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 23 2009, 19:14
Сообщение #56


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(AndreyKeil @ Apr 24 2009, 00:57) *
А что не понятно? Код в библиотеке уже откомпилирован, т.е. он уже "готовый" (переведён в коды, понятные процессору). Поэтому он линкуется, т.е. присоединяется где надо при сборке.
Не совсем так. Библиотека может поставляться и в исходных текстах тоже. Тогда ее можно (править и) использовать также, как и другие исходные тексты. Использовать ли объектный библиотечный модуль или исходный текст библиотеки задается в опциях IDE или make. При использовании объектного кода библиотеки да, она только линкуется. При использовании исходного текста библиотеки она проходит весь цикл (препроцессор->компилятор->линкер) как и любой другой исходник.
Go to the top of the page
 
+Quote Post
Guest_Скопидор_*
сообщение Apr 23 2009, 19:34
Сообщение #57





Guests






Цитата(singlskv @ Apr 23 2009, 22:46) *
Патаму-чта Вы в самом начале сказали что ответов в книжках не нашли…

Да не нашёл. Пока не нашёл. Не исключаю, что плохо искал. Также не исключаю, что могу найти ответы на все свои вопросы в книжках. Но сколько время на это уйдёт? Ведь не секрет, что хороший наставник сможет научить человека тому, что знает гораздо быстрей, чем если человек будет осваивать это самостоятельно идя методом проб и ошибок.

Цитата(singlskv @ Apr 23 2009, 22:46) *
… но все остальные то нашли...

Ещё не факт, что именно в книжках. Возможно, спросили у коллег в реале или на каком-нибудь форуме.

Повторяю, я ламер в C++, поэтому мои вопросы кому-то кажутся глупыми и раздражают. Я скажу этим товарищам: вспомните, что и вы когда-то были полным лузером и не осуждайте.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Apr 23 2009, 19:43
Сообщение #58


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Какие книги смотрели?
У Страуструпа про заголовочные файлы написано, на мой взгляд, очень понятно. Я эту книгу перечитывал не один раз и не могу сказать,что знаю все детали. Время надо много для чтения и желателен карандаш.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Guest_Скопидор_*
сообщение Apr 23 2009, 19:43
Сообщение #59





Guests






Цитата(singlskv @ Apr 23 2009, 22:46) *
По раздельной компиляции,
все С(С++) файлы(исходники) собираются отдельно

Собираются в смысле компилируются (“Build”)? А где описываются «задание» компилятору, т.е. перечень CPP-файлов, подлежащих компиляции? В Makefile?
Go to the top of the page
 
+Quote Post
singlskv
сообщение Apr 23 2009, 19:48
Сообщение #60


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Скопидор @ Apr 23 2009, 23:34) *
Ещё не факт, что именно в книжках. Возможно, спросили у коллег в реале или на каком-нибудь форуме.

Повторяю, я ламер в C++, поэтому мои вопросы кому-то кажутся глупыми и раздражают. Я скажу этим товарищам: вспомните, что и вы когда-то были полным лузером и не осуждайте.
Раздражение здесь может быть только от одного, многим видно, что Вы не сделали и десятой доли усилий,
чтоб это познать самому без посторонней помощи...
Сделайте усилие над собой, а потом задавайте вопросы... и тогда Вам с удовольствием помогут.
Go to the top of the page
 
+Quote Post

6 страниц V  « < 2 3 4 5 6 >
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 21:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01491 секунд с 7
ELECTRONIX ©2004-2016