Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/58: Рейтинг темы: голосов - 58, средняя оценка - 4.78
0 / 0 / 1
Регистрация: 01.06.2011
Сообщений: 60
1

файлы stdafx

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

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

Подскажите, пожалуйста, зачем нужны файлы stdafx? почему в начале создания консольного приложения иногда появляются файлы stdafx.h в папке с заголовочными файлами и stdafx.cpp в Source files папке...а иногда они не создаются?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2012, 22:24
Ответы с готовыми решениями:

stdafx.h и StdAfx.h
Добавил в свое решение проект (win32, lib). Добавил класс. У меня создался cpp-файл каркас с...

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

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

Использование stdafx.h
Добрый день (вечер). Я учусь на первом курсе. Мы начали изучать Си, а потому нам дали учебник по...

5
100 / 100 / 39
Регистрация: 17.04.2011
Сообщений: 554
20.10.2012, 22:29 2
нный подключаемый файл не относится к стандартной библиотеке. Самый простой способ выяснить содержимое данного подключаемого файла в вашем проекте -- открыть его и посмотреть.
0
~ Эврика! ~
1254 / 1003 / 74
Регистрация: 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
0 / 0 / 1
Регистрация: 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
1184 / 540 / 78
Регистрация: 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
36 / 36 / 0
Регистрация: 09.08.2012
Сообщений: 132
21.10.2012, 06:21 6
stdafx это просто имя по умолчанию. Вы можете задавать любое. Это относится к предкомпилированным заголовкам
гугли "Предварительно откомпилированные заголовки"
Там написано и для чего и как и почему

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

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

Для чего это нужно? Вот есть проект, он собирается например, двадцать минут. После того как вы примените эту технологию, проект будет полностью пересобираться возможно даже за две минуты. Разница ощутима.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2012, 06:21

Ошибка stdafx в Dev C++
Not such file in derectory. Без stdafx код не работает, но дев выдает ошибку

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

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

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


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

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

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