Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2011, 20:58   #1
SrgGld
Пользователь
 
Аватар для SrgGld
 
Регистрация: 23.10.2010
Сообщений: 17
Вопрос Заголовочные файлы. Модули. MS VC++

В .cpp содержащем main пишется #include "stdafx.h"
В stdafx.h содержится:
Код:
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
В stdafx.cpp содержится только: #include "stdafx.h".
На сколько я понял, если я создаю отдельный модуль с классом, который будет использовать моя программа, надо в MyClass.h поместить описание класса и запрет повторного включения:
Код:
#ifndef MyClass_h
#define MyClass_h
class Endless
{....};
#endif
а в MyClass.сpp описание методов.

Вопросы.
1. зачем нужен stdafx.h, если можно включить файлы непосредственно?
1.1 Надо ли остальные используемые файлы, например, тот же iostream включать в stdafx'е, а не в основном модуле?
2. Зачем нужен stdafx.cpp?
3. Надо ли в MyClass.сpp писать #include "stdafx.h"?
4. Надо ли в MyClass.сpp писать #include "MyClass.h"? Если да, то надо ли в MyClass.h писать #include "MyClass.сpp" иначе как же компилятор найдёт описание методов класса? По одинаковому имени?
SrgGld вне форума Ответить с цитированием
Старый 15.04.2011, 23:05   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
1. зачем нужен stdafx.h, если можно включить файлы непосредственно?
http://ru.wikipedia.org/wiki/Предвар...нные_заголовки

Цитата:
1.1 Надо ли остальные используемые файлы, например, тот же iostream включать в stdafx'е, а не в основном модуле?
Обычно фалы подключаются там, где нужны. Остальное в первой статье.

Цитата:
2. Зачем нужен stdafx.cpp?
Для унифицированности, по традиции, чтобы компилировать в отдельный объектник, для определения каких-то переменных...

Цитата:
3. Надо ли в MyClass.сpp писать #include "stdafx.h"?
Попробуйте, компилятор вам обязательно расскажет.

Цитата:
4. Надо ли в MyClass.сpp писать #include "MyClass.h"? Если да, то надо ли в MyClass.h писать #include "MyClass.сpp" иначе как же компилятор найдёт описание методов класса? По одинаковому имени?
Да. Нет.
p51x вне форума Ответить с цитированием
Старый 15.04.2011, 23:38   #3
SrgGld
Пользователь
 
Аватар для SrgGld
 
Регистрация: 23.10.2010
Сообщений: 17
Вопрос

То есть всё-таки можно в stdafx.h засунуть подключение других стандартных модулей?
И непонятно всё-таки, как происходит компиляция (линковка в частности). Что и в каком порядке компилируется, и подставляется из одного файла в другой?
Компилируются все .cpp файлы проекта подряд (прихватывая нужные .h файлы) и потом подставляются в нужные места?
SrgGld вне форума Ответить с цитированием
Старый 15.04.2011, 23:58   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Компиляция довольно сложный многошаговый процесс.

Цитата:
То есть всё-таки можно в stdafx.h засунуть подключение других стандартных модулей?
Прочтите статью. Он такой же хедер со всеми вытекающими, только иногда обрабатывается особо.

Цитата:
Что и в каком порядке компилируется, и подставляется из одного файла в другой?
Зависит от компилятора и настроек. Но думаю все начинается с файла, где точка входа приложения определена. Подставляются... вы о чем? Задефаненное естественно подставляется еще препроцессором.

Цитата:
Компилируются все .cpp файлы проекта подряд (прихватывая нужные .h файлы) и потом подставляются в нужные места?
Если компилятор не тупит, то скомпилится только зависимые. Но ничего не мешает компилятору компилировать все cpp.
Хедеры не прихватываются, а вставляются в cpp препроцессором. Прочитате про директиву include.
p51x вне форума Ответить с цитированием
Старый 16.04.2011, 07:25   #5
SrgGld
Пользователь
 
Аватар для SrgGld
 
Регистрация: 23.10.2010
Сообщений: 17
По умолчанию

Спасибо за подробные ответы.
А статью-то я в первую очередь прочитал.
SrgGld вне форума Ответить с цитированием
Старый 19.09.2011, 04:01   #6
dalazarev
 
Регистрация: 19.09.2011
Сообщений: 3
По умолчанию

Получается, что в файл main.cpp мы включаем stdafx.h, а в stdafx.h включаем, скажем, iostream и conio.h. Отсюда вопрос: а зачем тогда еще и файл stdafx.cpp, в котором также включается stdafx.h?
dalazarev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заголовочные файлы в Си Pirr Общие вопросы C/C++ 12 18.03.2011 00:29
Заголовочные файлы legendary Общие вопросы C/C++ 1 11.09.2010 19:41
Заголовочные файлы и windows 7 papochka Общие вопросы C/C++ 7 14.11.2009 22:05
Заголовочные файлы Гром Общие вопросы C/C++ 4 31.08.2009 15:36
Заголовочные файлы. C++ Vi_King Помощь студентам 2 03.04.2008 18:47