Форум программистов, компьютерный форум CyberForum.ru

файлы stdafx - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка по алфавиту http://www.cyberforum.ru/cpp-beginners/thread676042.html
На вход подается некоторое количество описаний книг (автор, название, количество страниц). Отсортировать и вывести в алфавитном порядке по названиям.
C++ Отличие двух типов Чем отличаются два типа: double и float? Напишите существенные отличия! http://www.cyberforum.ru/cpp-beginners/thread676033.html
C++ Работа с текстовыми файлами
Доброго времени суток. Есть ф-ия: void FillM(int **&tab, int &w, int &h) { FILE *f; if((f=fopen("input.txt","r"))==NULL) { printf("error (input)\n"); exit(1); }
Перевод числа n из двоичной в 8 СС C++
#include "stdafx.h" #include <iostream> #include <math.h> using namespace std; int main () { const int n=100; char text, text1=""; cout<<"\nVvedite chislo, kotoroe hotite perevesti chislo= "; cin>>text; int lentxt=strlen(text), k=0;
C++ Определить, лежит точка внутри заштрихованной области, вне её или на её границе http://www.cyberforum.ru/cpp-beginners/thread676010.html
Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений "Да", "Нет", "На границе" в зависимости от того, лежит ли точка внутри заштрихованной области, вне заштрихованной области или на ее границе.
C++ Построчная обработка string Есть некий "многострочный" текст string s;. Задача состоит в том, чтобы после каждой строки, кроме последней, после каждого знака ' " ' и ' \ ' поставить ' \ '. Например из текста: cout << "123" << endl; cout << "123\n123\n123132" << endl; Нужно получить: cout << \"123\" << endl;\ cout << \"123\\n123\\n123132\" << endl; подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
20.10.2012, 23:40     файлы stdafx
Ну хоть кто-то задался этим вопросом, а не слепо копипастит код :)

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

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

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

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

Конкретно Visual Studio это делает с помощью этого самого stdafx. Все инклюды, что идут перед #include "stdafx.h", выносятся в этот отдельный файл, компилируются там, а интерфейс к этом файлу запихивается в этот самый stdafx.h, чтобы остальная часть исходника ни о чём не подозревала.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru