Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 44, средняя оценка - 4.93
nutius
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 60
#1

файлы stdafx - C++

20.10.2012, 22:24. Просмотров 7154. Ответов 5
Метки нет (Все метки)

Здравствуйте, форумчане!

Подскажите, пожалуйста, зачем нужны файлы stdafx? почему в начале создания консольного приложения иногда появляются файлы stdafx.h в папке с заголовочными файлами и stdafx.cpp в Source files папке...а иногда они не создаются?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2012, 22:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос файлы stdafx (C++):

stdafx.h и StdAfx.h - C++
Добавил в свое решение проект (win32, lib). Добавил класс. У меня создался cpp-файл каркас с #include "StdAfx.h". Почему здесь...

iostream, StdAfx.h - C++
Начал изучать С++ попытался набрать первый листинг и посмотреть программу в работе и тут же натолкнулся на ошибку. Первое, о чём хотел бы...

Подключение stdafx.h - C++
Здравствуйте! Помогите , пожалуйста, разобраться с проблемой! Без подключения библиотеки "stdafx.h" просит подключить ее, а после того,...

Ошибка подключения stdafx.h - C++
скажите пожалуйста как исправит эту ошибку Сообщения и тексты программ надо копировать в текст поста

stdafx.h: No such file or directory - C++
Как убрать ошибку? stdafx.h: No such file or directory.

Не найден файл stdafx.h - C++
#include <iostream> using namespace std; int main() { int i=0; while(i++<10){ int k=2, b=3; ...

5
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
20.10.2012, 22:29 #2
нный подключаемый файл не относится к стандартной библиотеке. Самый простой способ выяснить содержимое данного подключаемого файла в вашем проекте -- открыть его и посмотреть.
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
20.10.2012, 23:40 #3
Ну хоть кто-то задался этим вопросом, а не слепо копипастит код :)

Смотрите, .h-файлы это хедеры. То есть там вроде как должны быть определения типов данных, структуры классов и т. п. А код по идее должен быть только в .cpp-файлах.

Хедеры подключаются в файлы — то есть прямиком вставляются в исходник во время компиляции.

Иногда хедеры содержат не только определения, но и код (например, когда там определяется шаблонный класс). В итоге весь этот код прямиком вставляется в .cpp-файл, который инклюдит хедер, и компилируется заново. Вроде бы можно вынести этот код в отдельный .cpp-файл, но иногда лень/нельзя/синтаксис не позволяет/и ещё куча причин.

Компилировать триста раз один и тот же код глупо. Поэтому придумана такая штука как предкомпилированные хедеры — компилятор выдирает из хедеров весь код и компилирует его отдельно, как будто он действительно был в личном .cpp-файле.

Конкретно Visual Studio это делает с помощью этого самого stdafx. Все инклюды, что идут перед #include "stdafx.h", выносятся в этот отдельный файл, компилируются там, а интерфейс к этом файлу запихивается в этот самый stdafx.h, чтобы остальная часть исходника ни о чём не подозревала.
1
nutius
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 60
21.10.2012, 01:25  [ТС] #4
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Ну хоть кто-то задался этим вопросом, а не слепо копипастит код :)

Смотрите, .h-файлы это хедеры. То есть там вроде как должны быть определения типов данных, структуры классов и т. п. А код по идее должен быть только в .cpp-файлах.

Хедеры подключаются в файлы — то есть прямиком вставляются в исходник во время компиляции.

Иногда хедеры содержат не только определения, но и код (например, когда там определяется шаблонный класс). В итоге весь этот код прямиком вставляется в .cpp-файл, который инклюдит хедер, и компилируется заново. Вроде бы можно вынести этот код в отдельный .cpp-файл, но иногда лень/нельзя/синтаксис не позволяет/и ещё куча причин.

Компилировать триста раз один и тот же код глупо. Поэтому придумана такая штука как предкомпилированные хедеры — компилятор выдирает из хедеров весь код и компилирует его отдельно, как будто он действительно был в личном .cpp-файле.

Конкретно Visual Studio это делает с помощью этого самого stdafx. Все инклюды, что идут перед #include "stdafx.h", выносятся в этот отдельный файл, компилируются там, а интерфейс к этом файлу запихивается в этот самый stdafx.h, чтобы остальная часть исходника ни о чём не подозревала.

Спасибо за ответ!
Еще хочу уточнить, когда на одном копмьютере в студии я создаю консольное приложение через File-new project-win32 console application - add new item - c++ file, то создаются файлы stdafx, а на другом - нет.
Читала, что их можно подключить через Precompiled Headers в свойствах проекта, но когда я выбираю Create Precompiled Headers - файлы не создаются. Как и все-таки можно подключить?
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
21.10.2012, 02:41 #5
Цитата Сообщение от nutius Посмотреть сообщение
Еще хочу уточнить, когда на одном копмьютере в студии я создаю консольное приложение через File-new project-win32 console application - add new item - c++ file, то создаются файлы stdafx, а на другом - нет.
Разные версии студий, разные настройки прекомпилированных заголовков, разные тараканы.

Цитата Сообщение от nutius Посмотреть сообщение
Читала, что их можно подключить через Precompiled Headers в свойствах проекта, но когда я выбираю Create Precompiled Headers - файлы не создаются. Как и все-таки можно подключить?
Ну как подключить. Просто если поставить галочку возле "прекомпелированные заголовки" при создании проекта то студия их сунет в файл проекта. Делает это всё чтобы ускорить процесс сборки, если галочку не ставить то файлы в папке проекта не появятся да и директиву можно убрать из проекта (студия не будет их всё равно искать). А вообще не заморачивайте голову этим, и без них всё будет работать
0
warchief
36 / 36 / 3
Регистрация: 09.08.2012
Сообщений: 114
21.10.2012, 06:21 #6
stdafx это просто имя по умолчанию. Вы можете задавать любое. Это относится к предкомпилированным заголовкам
гугли "Предварительно откомпилированные заголовки"
Там написано и для чего и как и почему

Цитата Сообщение от nutius Посмотреть сообщение
а иногда они не создаются?
Ничего случайного в компьютере не может быть.
Когда создаешь проект. Открывается окно. Вместо того чтобы тупо нажимать Готово, жми Дальше, увидешь вот такое окно
http://www.imageup.ru/img298/1078603/bezymyannyjj.jpg

Видишь в самом низу стоит флажок? Вот если его снять. Файла stdafx не будет. А если оставить, то файл stdafx появится. Новичкам которые не знают что это такое - нужно снимать этот флажок, иначе получите ошибки которые просто не сможете исправить от незнания того, где это настраивается.

Для чего это нужно? Вот есть проект, он собирается например, двадцать минут. После того как вы примените эту технологию, проект будет полностью пересобираться возможно даже за две минуты. Разница ощутима.
0
21.10.2012, 06:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2012, 06:21
Привет! Вот еще темы с ответами:

Ошибка stdafx.h: No such file or directory - C++
при запуске программы выдает такую ошибку : fatal error C1083: Не удается открыть файл включение: stdafx.h: No such file or directory ...

библиотека stdafx.h на MAC OS, что делать?:) - C++
Всем привет:) нашел на Ютубе видеоуроки по Си: http://www.youtube.com/watch?v=3w2Ui0fr6Rg&feature=c4-overview-vl&list=PL416C511D02A4E585 ...

Зачем нужен заголовочный файл stdafx.h - C++
Не видит директорию "stdafx.h" в Code::Block, может кто знает как подключить? #include "stdafx.h" #include <iostream> using...

Не удается открыть источник файл "stdafx.h - C++
Выдает ошибку "не удается открыть источник файл "stdafx.h"" Подскажите пож-та, в чем проблема? // Легенда программы: имееется небольшой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru