|
Вопросы по C от ламера, В книжках ответа чёта не нахожу |
|
|
Guest_Скопидор_*
|
Apr 10 2009, 11:16
|
Guests

|
Зачем вообще нужно ключевое слово «auto»? Ведь классификатор(или квалификатор? как это слово точно называется?) памяти «auto» никак не используется ( по крайней мере в исходниках разных разработчиков я его не видел). Т.к. глобальные переменные не могут быть « auto», а локальные и так по умолчанию «auto».
Сообщение отредактировал Скопидор - Apr 10 2009, 11:19
|
|
|
|
|
 |
Ответов
Guest_Скопидор_*
|
Apr 14 2009, 22:13
|
Guests

|
1.А обязательно ли в препроцессорной директиве #include использовать файлы с расширением .h ? Т.е. могу ли, например, написать файл с раширением .my и вложить его содержимое в основной файл с помощью директивы #include? 2. Почему директиву #include используют в начале файла? А существуют ли случаи, когда выгодно использовать эту директиву в середине, или даже в конце основного файла? И что это за случаи? 3. Использование #include подразумевает экспортирование ресурсов из .h-файла. А бывают ли случаи, когда наоборот, вкладываемый файл импортирует ресурсы из того файла, в который он вкладывается? Если да, то что это за случаи? Цитата(andrew_b @ Apr 13 2009, 09:32)  Думаю, вам лучше обратиться на более специализированный ресурс. На RSDN, например. Ссылка битая. Сайт не грузится 4. Есть прога: Код void main(void) { int I = 1; { // блок2 int I = 2; goto Exit; // --------------- I++; } I = 4; // ------------------ Exit:; I = 3; } На входе в блок2, я так понимаю, компилятор сохранит в стеке регистровый контекст и выделит в стеке память под локальную переменную I. А на выходе компилятор должен будет восстановить контекст (в том числе указатель стека), который был непосредственно перед входом в блок2. Но т.к. выполняется команда перехода за пределы блока2, то получается, что команды восстановления контекста из стека будут пропущены? 5.Если main – функция, то можно ли её рекурсивно вызвать внутри её самой? 6. Как избежать в своей программе непреднамеренного «экранирования» идентификаторов из стандартной библиотеки?
Сообщение отредактировал Скопидор - Apr 14 2009, 22:17
|
|
|
|
|
Apr 15 2009, 04:41
|
Профессионал
    
Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757

|
Цитата(Скопидор @ Apr 15 2009, 02:13)  1.А обязательно ли в препроцессорной директиве #include использовать файлы с расширением .h ? Т.е. могу ли, например, написать файл с раширением .my и вложить его содержимое в основной файл с помощью директивы #include? Да. Расширение вообще ни причём. См. ниже. Цитата 3. Использование #include подразумевает экспортирование ресурсов из .h-файла. Ничего подобного. #include -- это просто включение текста одного файла в другой файл. Ничего больше. Почитайте про препроцессор. Цитата Ссылка битая. Сайт не грузится Ссылка не битая. А сайт действительно не грузится. С ним это бывает крайне редко. Попробуйте попозже. Это лучший ресурс в рунете по программированию.
|
|
|
|
Guest_Скопидор_*
|
Apr 15 2009, 07:30
|
Guests

|
Цитата(andrew_b @ Apr 15 2009, 08:41)  Ничего подобного. #include -- это просто включение текста одного файла в другой файл. Да я в курсе. Просто я говорил о том, что можно код распределить по файлам так, что не CPP-файл будет юзать ресурсы из H-файла, а наоборот. И это будет выглядеть как импортирование. Приведу пример CODE // Файл f.h int I,J; int F1(int, int); // Прототип функции, реализация которой будет определена в C-файле int F2(void); // Функция, которая использует F1 { return (F1(I,J)); }
// Файл main1.c #include "f.h " int Result; // -------------------- int F1( int A, B) { return (A*B) } // -------------------- void main (void) { I = 3; J = 4; Result = F2(); } // --------------------
// Файл main2.c #include "f.h " int Result; // -------------------- int F1( int A, B) { return (A+B) } // -------------------- void main (void) { I = 3; J = 4; Result = F2(); } // -------------------- Вот и получается, что алгоритм работы определённой в файле f.h функции F2 зависит от того, в какой файл будет вложен f.h: в main1.c или в main2.c. Т.е. всё выглядит так, что как будто бы в функцию F1 импортируется реализация из C-файла, т.к. результат, возвращаемый функцией F1 (а значит и использующей её F2) зависит от того, в какой файл был вложен f.h. Цитата(andrew_b @ Apr 15 2009, 08:41)  Да. Расширение вообще ни причём. См. ниже. А я вот когда работал в WinAVR, то там при создании проекта создаются категории Header и Source. И если включить файл *.h в категорию Header, то можно даже в исходнике не писать #include *.h. Так как компилятор сам поймёт что *.h файл нужно вложить во все исходники проекта (во все *.c файлы). Или я не прав? Вот я и думаю, что если у меня файл, включнённый в категорию Header будет иметь расширение не h, а другое? "Подцепит" ли его компилятор автоматом к проекту?
Причина редактирования: Уменьшение видимого размера цитаты исходника.
|
|
|
|
|
Apr 15 2009, 07:41
|

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

|
Цитата(Скопидор @ Apr 15 2009, 11:30)  И если включить файл *.h в категорию Header, то можно даже в исходнике не писать #include *.h. Так как компилятор сам поймёт что *.h файл нужно вложить во все исходники проекта (во все *.c файлы). Хрень какую-то несёте в массы. Компилятор не может ничего никуда автоматом "подцеплять". Он может тупо компилить, что ему дадут. Максимум что может быть, так это что ваши h-файлы будут видны из любого места проекта, и можно будет инклудить их просто #include "some_header.h" без указания абсолютного пути. Опять же, к компилятору это никаким боком, это делает утилита, формирующая makefile.
Причина редактирования: Излишнее цитирование.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
Guest_Скопидор_*
|
Apr 15 2009, 08:09
|
Guests

|
Цитата(MrYuran @ Apr 15 2009, 11:41)  Хрень какую-то несёте в массы. Ну когда мы делаем "add File to Project" мы же хидеры добваляем в категорию "Header". И после того как файл проекта (dsn по-моему) сформирован, компилятор знает, какие *.h файлы юзать при сборке. Разве не так? Цитата(MrYuran @ Apr 15 2009, 08:31)  C чего бы это вдруг?  Никому он ничего не должен. Блок {} означает всего лишь составной оператор, никаких переходов и контекстов не имеется в виду. А я прочитал в книшшке, что если внутри {…} определяются локальные переменные, то составной оператор автоматом становиться блоком со всеми вытекающими последствиями (сохранение контекста процессора при входе в блок, создание локальных переменных в стеке и т.п.) Цитата(ReAl @ Apr 15 2009, 11:54)  определить свои cin/cout в своём пространстве имён oak и квалифицировать при использовании oak::cin А что такое «oak»? …. Т.е. Ваше сообщение было к тому, что «сломать» очень сложно? Но ведь стандартная библиотека – это не только классы и шаблоны.
Причина редактирования: Излишнее цитирование.
|
|
|
|
Сообщений в этой теме
Скопидор Вопросы по C от ламера Apr 10 2009, 11:16 mdmitry The C++ Programming Language Special 3rd Edition ... Apr 10 2009, 13:08 SysRq На Хабре было интересно: http://habrahabr.ru/blogs... Apr 10 2009, 13:37 Скопидор Цитата(SysRq @ Apr 10 2009, 17:37) На Хаб... Apr 10 2009, 18:29 Скопидор Какие компиляторы (каких фирм) и начиная с какого ... Apr 10 2009, 22:02 andrew_b Цитата(Скопидор @ Apr 11 2009, 02:02) Как... Apr 13 2009, 05:32 ukpyr ЦитатаДык объявлять каждую переменную в каждом из ... Apr 14 2009, 21:23 Скопидор Цитата(ukpyr @ Apr 15 2009, 01:23) правил... Apr 14 2009, 21:42 MrYuran Цитата(Скопидор @ Apr 15 2009, 01:42) А к... Apr 15 2009, 04:13 MrYuran Цитата(Скопидор @ Apr 15 2009, 02:13) Ест... Apr 15 2009, 04:31 Скопидор Цитата(Скопидор @ Apr 15 2009, 02:13) 5.Е... Apr 24 2009, 11:51 SysRq Цитата(Скопидор @ Apr 11 2009, 02:02) Поч... Apr 14 2009, 23:32 Скопидор Цитата(SysRq @ Apr 15 2009, 03:32) Неверн... Apr 15 2009, 00:48  SysRq Цитата(Скопидор @ Apr 15 2009, 04:48) Ну ... Apr 15 2009, 01:45   Скопидор Цитата(SysRq @ Apr 15 2009, 05:45) Срочно... Apr 15 2009, 07:47    ReAl Цитата(Скопидор @ Apr 15 2009, 10:44) Доп... Apr 15 2009, 07:54     andrew_b Цитата(ReAl @ Apr 15 2009, 11:54) Код#inc... Apr 15 2009, 08:19      Скопидор Цитата(andrew_b @ Apr 15 2009, 12:19) Ну ... Apr 15 2009, 08:39       andrew_b Цитата(Скопидор @ Apr 15 2009, 12:39) А д... Apr 15 2009, 09:11        Скопидор Цитата(andrew_b @ Apr 15 2009, 13:11) Вид... Apr 15 2009, 10:09    ReAl Цитата(Скопидор @ Apr 15 2009, 10:47) Да ... Apr 15 2009, 08:30 mdmitry IDE сама может при создании файла прописать некото... Apr 15 2009, 11:56 Скопидор Вопрос №7.
Можно ли использовать при объявлении (... Apr 15 2009, 15:42 SysRq Цитата(Скопидор @ Apr 15 2009, 19:42) ...... Apr 15 2009, 20:00  Скопидор Цитата(SysRq @ Apr 16 2009, 00:00) Присва... Apr 15 2009, 20:34   demiurg_spb Цитата(Скопидор @ Apr 16 2009, 00:34) А к... Apr 15 2009, 21:52 andrew_b Цитата(Скопидор @ Apr 15 2009, 19:42) Воп... Apr 16 2009, 04:48 _Pasha Цитата(Скопидор @ Apr 15 2009, 18:42) Воп... Apr 16 2009, 10:35 Скопидор Возвращаясь к обсуждению директивы #include.
В не... Apr 23 2009, 12:22 andrew_b Цитата(Скопидор @ Apr 23 2009, 15:28) Поя... Apr 23 2009, 12:23 MrYuran Ещё раз.
Встретив директиву #include "filena... Apr 23 2009, 12:27 Скопидор Цитата(MrYuran @ Apr 23 2009, 16:27) Код ... Apr 23 2009, 12:35  AndreyKeil Цитата(Скопидор @ Apr 23 2009, 18:35) А м... Apr 23 2009, 12:54   Скопидор Цитата(AndreyKeil @ Apr 23 2009, 16:54) Г... Apr 23 2009, 13:03    mdmitry Цитата(Скопидор @ Apr 23 2009, 17:03) Т.е... Apr 23 2009, 13:21 Скопидор Дык всё-таки "раздельная компиляция" ест... Apr 23 2009, 12:29 andrew_b Цитата(Скопидор @ Apr 23 2009, 16:29) Дык... Apr 23 2009, 12:35 MrYuran Цитата(Скопидор @ Apr 23 2009, 16:29) Дык... Apr 23 2009, 12:37 Скопидор Т.е. препроцессор каким-то чудесным образом узнаёт... Apr 23 2009, 12:51 MrYuran Цитата(Скопидор @ Apr 23 2009, 16:51) А е... Apr 23 2009, 15:09  Скопидор Цитата(MrYuran @ Apr 23 2009, 19:09) В h-... Apr 23 2009, 15:18   MrYuran Цитата(Скопидор @ Apr 23 2009, 19:18) Из ... Apr 23 2009, 16:57 Скопидор Вопрос №12
Как и для чего в C++ используется идент... Apr 23 2009, 14:57 sergeeff Все что имеется в h-файлах и не отключается команд... Apr 23 2009, 15:38 Скопидор Цитата(sergeeff @ Apr 23 2009, 19:38) Вам... Apr 23 2009, 17:36 SysRq Скопидор, уймитесь с форматированием. Весеннее обо... Apr 23 2009, 17:42 Скопидор Цитата(SysRq @ Apr 23 2009, 21:42) Скопид... Apr 23 2009, 18:31  singlskv Цитата(Скопидор @ Apr 23 2009, 22:31) Да ... Apr 23 2009, 18:46  sergeeff Цитата(Скопидор @ Apr 23 2009, 21:31) Да ... Apr 23 2009, 19:02 AndreyKeil Цитата(Скопидор @ Apr 24 2009, 00:31) Неп... Apr 23 2009, 18:57 rezident Цитата(AndreyKeil @ Apr 24 2009, 00:57) А... Apr 23 2009, 19:14 Скопидор Цитата(singlskv @ Apr 23 2009, 22:46) Пат... Apr 23 2009, 19:34 singlskv Цитата(Скопидор @ Apr 23 2009, 23:34) Ещё... Apr 23 2009, 19:48  Скопидор Цитата(singlskv @ Apr 23 2009, 23:48) Раз... Apr 23 2009, 20:26   mdmitry Цитата(Скопидор @ Apr 24 2009, 00:26) Вы ... Apr 24 2009, 08:09    Скопидор Цитата(mdmitry @ Apr 24 2009, 12:09) Вы т... Apr 24 2009, 09:03     andrew_b Цитата(Скопидор @ Apr 24 2009, 13:03) Кни... Apr 24 2009, 09:08      Скопидор Цитата(andrew_b @ Apr 24 2009, 13:08) Не ... Apr 24 2009, 09:17     mdmitry Цитата(Скопидор @ Apr 24 2009, 13:03) Кни... Apr 24 2009, 09:34      Скопидор Цитата(mdmitry @ Apr 24 2009, 13:34) учас... Apr 24 2009, 09:44 mdmitry Какие книги смотрели?
У Страуструпа про заголовочн... Apr 23 2009, 19:43 Скопидор Цитата(singlskv @ Apr 23 2009, 22:46) По ... Apr 23 2009, 19:43 SysRq Стоило остановиться еще там:
Цитата(Скопидор ... Apr 23 2009, 19:52 Скопидор Цитата(singlskv @ Apr 23 2009, 22:46) #in... Apr 23 2009, 20:07 singlskv Цитата(Скопидор @ Apr 24 2009, 00:07) Т.е... Apr 23 2009, 20:13 sergeeff Цитата(Скопидор @ Apr 23 2009, 23:07) Я п... Apr 23 2009, 20:17 MrYuran Цитата(Скопидор @ Apr 24 2009, 00:07) Т.е... Apr 24 2009, 04:24 sergeeff И в результате всей совместной деятельности форумч... Apr 23 2009, 21:33 Скопидор Цитата(sergeeff @ Apr 24 2009, 01:33) И в... Apr 24 2009, 07:31 SysRq Новички C++!!! Это очень понятный язык... Apr 24 2009, 13:48 Скопидор Цитата(SysRq @ Apr 24 2009, 17:48) Новичк... Apr 24 2009, 14:16  sergeeff Цитата(Скопидор @ Apr 24 2009, 17:16) «Ес... Apr 24 2009, 16:09   Скопидор Цитата(sergeeff @ Apr 24 2009, 20:09) Я н... Apr 24 2009, 19:02 sergeeff Понятно, хочется себя любимого втюхать кому-то как... Apr 24 2009, 21:51 Скопидор Цитата(sergeeff @ Apr 25 2009, 01:51) Пон... Apr 24 2009, 22:13 SysRq Раз все выяснилось, предлагаю принять правила игры... Apr 24 2009, 22:24 Скопидор Цитата(SysRq @ Apr 25 2009, 02:24) Раз вс... Apr 24 2009, 23:32  SysRq Цитата(Скопидор @ Apr 25 2009, 03:32) Тог... Apr 25 2009, 00:07 Andy Nikiforovv Кто удаляет из исходника камменты (перед компиляци... Apr 27 2009, 19:14 sergeeff Цитата(Andy Nikiforovv @ Apr 27 2009, 23... Apr 27 2009, 19:18 mdmitry Цитата(Andy Nikiforovv @ Apr 27 2009, 23... Apr 27 2009, 20:48 Andy Nikiforovv Написано, что параметры командной строки для Borla... Apr 27 2009, 20:14
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|