Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
VC++: Что такое stdafx.h. Полный Q/A.
 
У меня возник один вопросик по VC++

Почему обязательно в каждом проекте(Console app) должен иметься фаил stdafx.h?????????????????????????????
Без этого инклудеса все бы компилилось, но! если эту файлюгу исключить, то... он пишет об ошибке... всегда одна и та же, если кто-то хоСЧет проверить, то попробуйте исключить эту бяку...   
 
В VC++ Console Application? Я бы так не сказал. У меня этот хэдэр вобще редко бывает. Обязательный для моих сорцов - iostream - он у меня всегда включен. Может сорцы свои покажешь?
 
<font color=RED>
#include "stdlib.h"
#include "stdafx.h"
#include "stdio.h"
#include "windows.h"  </font>

Вот инклудесы мои, счас покажу какая <error> вылазит без
stdafx.h

d:\projects\c++\killer\killer.cpp(21) : fatal error C1010: unexpected end of file while looking for precompiled header directive
 
Ты, что компилишь эксплоит? Тогда понятно. Но "для каждого проекта" этот хэдэр не обязателен.
 
Скажем так:
Давай сделаем простейшее:
#include <stdio.h>

void main(argc ...(т.д.))
{
 printf("HelloWorld"};
 return 0;
}

Не получается без stdafx.h, вылазит:
.\HelloWorld.cpp(21) : fatal error C1010: unexpected end of file while looking for precompiled header directive
 
Давай. =)

#include <iostream.h>
void main (void)
{
     cout << "Hello, world!\n";
}
 
То же самое...

Не везет же мне, мозЖЖЕТ есть выход?


И еСЧё вопросик:
Работает ли Lamer Death 2.9 на ХР?

Я запустил хорошо настроенный сервак, с портом 30003(пробовал и другие порты) и попробовал подключиться сам к себе... пишет:
Не могу подсоединиться, помоги плиз  

Условие(но на других тоже пробовал, не получилось) у меня XP SP2(prerealise)
 
Так, ты не можешь откомплить даже этот сорц?

#include <iostream.h>
void main (void)
{
     cout << "Hello, world!\n";
}

Гм. А у тебя какой компилятор?
 
--- moderator hat on ---

2Gilgamesh: оффтопик и ответ "не в кассу". Не знаешь -- не суйся

Отвечаю сразу всем, и закрываю тему. Если кто не понял -- я не виноват, удалять мессаги с подобными вопросами буду сразу

--- moderator hat off ---


При создании нового проекта (C++, далее любой из подпроектов, типа Console App, MFC App, или ATL Service) Visual Studio генерит кучку файлов, которые составляют костяк приложения. Среди этих файлов имеются два, которые служать для генерации файла предкомпилированных заголовков (precompiled headers). Первый -- stdafx.h, в нем хранятся все "основные" include-ы проекта, но, как правило, не входящие в сам проект, т.е. файлы типа windows.h, stdio.h, afxwin.h включаются, а CSomeSuperPuperProjectClass.h -- нет.
Второй -- stdafx.cpp, служит как "затравка" компилятору для компиляции этого самого .pch-файла (precompiled headers file)

В свойствах проекта для всех файлов ставиться опция "use this precompiled header" и указывается stdafx.h
Исключение -- stfafx.cpp, для него указывается "create precompiled header file" и, опять таки, указывается stdafx.h

Q: Для чего это сделано.
A: Все это сделано для ускорения компиляции проектов и не более того. Из-за того, что объем части общих .h-файлов превосходит все разумные пределы (например windows.h, цепляющий ещё десяток win*.h), и компилировать все эти заголовочники для каждого source-файлы просто накладно. Поэтому один раз генерится PCH-файл, а потом он (PCH) используется. Ускорение, кстати, в десятки раз, особенно заметное при работе с ATL/MFC проектами.

Q: Почему возникает ошибка "error looking precompiled header directive".
A: В каждом source-файле, для которого стоит опция "use this precompiled header" #include "stdafx.h" должно идти первым include

Q: Как избавится от генерации PCH-файлов
A: В свойствах проекта для файлов выставить "Not Using Precompiled Headers" или "Automatically Generate"

Q: Где находятся эти опции
A: VS6: Project settings -> C/C++ -> Precompiled Headers
VS.NET: Configuration Properties -> C/C++ -> Precompiled Headers

Q: Я настроил компиляцию DEBUG-версии на отказ использования PCH, но при компиляции RELEASE ошибка опять возникла.
A: Project setting для DEBUG/RELEASE представляю разные сущности. См. пред. пункт Q/A и настрой все для RELEASE-конфигурации.
Страницы: 1
Читают тему (гостей: 2)