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

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





Guests






Зачем вообще нужно ключевое слово «auto»?
Ведь классификатор(или квалификатор? как это слово точно называется?) памяти «auto» никак не используется ( по крайней мере в исходниках разных разработчиков я его не видел).
Т.к. глобальные переменные не могут быть « auto», а локальные и так по умолчанию «auto».

Сообщение отредактировал Скопидор - Apr 10 2009, 11:19
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Guest_Скопидор_*
сообщение Apr 14 2009, 22:13
Сообщение #2





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
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Apr 15 2009, 04:41
Сообщение #3


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

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



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

Цитата
3. Использование #include подразумевает экспортирование ресурсов из .h-файла.
Ничего подобного. #include -- это просто включение текста одного файла в другой файл. Ничего больше. Почитайте про препроцессор.

Цитата
Ссылка битая. Сайт не грузится
Ссылка не битая. А сайт действительно не грузится. С ним это бывает крайне редко. Попробуйте попозже. Это лучший ресурс в рунете по программированию.
Go to the top of the page
 
+Quote Post
Guest_Скопидор_*
сообщение Apr 15 2009, 07:30
Сообщение #4





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, а другое? "Подцепит" ли его компилятор автоматом к проекту?
Причина редактирования: Уменьшение видимого размера цитаты исходника.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 15 2009, 07:41
Сообщение #5


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

Группа: Свой
Сообщений: 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 =)
Go to the top of the page
 
+Quote Post
Guest_Скопидор_*
сообщение Apr 15 2009, 08:09
Сообщение #6





Guests






Цитата(MrYuran @ Apr 15 2009, 11:41) *
Хрень какую-то несёте в массы.

Ну когда мы делаем "add File to Project" мы же хидеры добваляем в категорию "Header". И после того как файл проекта (dsn по-моему) сформирован, компилятор знает, какие *.h файлы юзать при сборке. Разве не так?

Цитата(MrYuran @ Apr 15 2009, 08:31) *
C чего бы это вдруг? 07.gif Никому он ничего не должен. Блок {} означает всего лишь составной оператор, никаких переходов и контекстов не имеется в виду.

А я прочитал в книшшке, что если внутри {…} определяются локальные переменные, то составной оператор автоматом становиться блоком со всеми вытекающими последствиями (сохранение контекста процессора при входе в блок, создание локальных переменных в стеке и т.п.)

Цитата(ReAl @ Apr 15 2009, 11:54) *
определить свои cin/cout в своём пространстве имён oak и квалифицировать при использовании oak::cin

А что такое «oak»?
….
Т.е. Ваше сообщение было к тому, что «сломать» очень сложно? Но ведь стандартная библиотека – это не только классы и шаблоны.
Причина редактирования: Излишнее цитирование.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Скопидор   Вопросы по 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
||- - Скопидор   Цитата(andrew_b @ Apr 15 2009, 08:41) Нич...   Apr 15 2009, 07:30
||- - Скопидор   Цитата(MrYuran @ Apr 15 2009, 11:41) Хрен...   Apr 15 2009, 08:09
|- - Скопидор   Цитата(Скопидор @ 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


Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th August 2025 - 18:30
Рейтинг@Mail.ru


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