StdAfx.cpp & StdAfx.h, что такое и как избавиться?
От: CC  
Дата: 01.12.01 20:43
Оценка:
Re: StdAfx.cpp & StdAfx.h, что такое и как избавиться?
От: IT Россия linq2db.com
Дата: 01.12.01 22:33
Оценка:
Здравствуйте CC, Вы писали:

А в чём проблема?
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: StdAfx.cpp & StdAfx.h, что такое и как избавиться?
От: Аноним  
Дата: 02.12.01 05:50
Оценка:
Здравствуйте IT, Вы писали:

IT>Здравствуйте CC, Вы писали:


IT>А в чём проблема?


Да не нужны они мне. И все-таки сабж?
Re[3]: StdAfx.cpp & StdAfx.h, что такое и как избавиться?
От: IT Россия linq2db.com
Дата: 02.12.01 05:57
Оценка:
Здравствуйте Аноним, Вы писали:

А>Да не нужны они мне. И все-таки сабж?


Ну раз не нужны, то удали их из проекта, и не забудь для всех cpp файлов проекта в Menu->Project->Settings->C/C++->Category->Precompiled Headers выставить флажок Not using precompiled headers.
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: StdAfx.cpp & StdAfx.h, что такое и как избавиться?
От: Аноним  
Дата: 02.12.01 09:10
Оценка:
А>>Да не нужны они мне.
Зря, между прочим. Это фишка без особого вреда для всего остального позволяет сократить время компиляции проекта в 5-10-20 раз. Отчего этим не пользоваться?
Re[5]: StdAfx.cpp & StdAfx.h, что такое и как избавиться?
От: Аноним  
Дата: 02.12.01 09:16
Оценка:
Здравствуйте Аноним, Вы писали:

А>>>Да не нужны они мне.

А>Зря, между прочим. Это фишка без особого вреда для всего остального позволяет сократить время компиляции проекта в 5-10-20 раз. Отчего этим не пользоваться?

Я когда другой хидер подключаю, выходят какие-то ошибки. Вот пример:
#include "StdAf.h"
#include "defs.h" // это мои определения

и тут при компиляции выходит 3 синтаксические ошибки. При том постоянно.
Re[6]: StdAfx.cpp & StdAfx.h, что такое и как избавиться?
От: Brother Россия  
Дата: 02.12.01 15:29
Оценка:
А>>>>Да не нужны они мне.
А>>Зря, между прочим. Это фишка без особого вреда для всего остального позволяет сократить время компиляции проекта в 5-10-20 раз. Отчего этим не пользоваться?
А>Я когда другой хидер подключаю, выходят какие-то ошибки. Вот пример:
А>#include "StdAf.h"
А>#include "defs.h" // это мои определения
А>и тут при компиляции выходит 3 синтаксические ошибки. При том постоянно.
Уверен, дело здесь не в stdafx.h. Если есть возможность — выкладывай исходники, обсудим. Думаю, отказываться от хорошего средства из-за какого-то незначительного "ляпа" не стоит.
С уважением,
Сергей
Re[7]: StdAfx.cpp & StdAfx.h, что такое и как избавиться?
От: CC  
Дата: 03.12.01 05:57
Оценка:
Здравствуйте Brother, Вы писали:

А>>>>>Да не нужны они мне.

А>>>Зря, между прочим. Это фишка без особого вреда для всего остального позволяет сократить время компиляции проекта в 5-10-20 раз. Отчего этим не пользоваться?
А>>Я когда другой хидер подключаю, выходят какие-то ошибки. Вот пример:
А>>#include "StdAf.h"
А>>#include "defs.h" // это мои определения
А>>и тут при компиляции выходит 3 синтаксические ошибки. При том постоянно.
B>Уверен, дело здесь не в stdafx.h. Если есть возможность — выкладывай исходники, обсудим. Думаю, отказываться от хорошего средства из-за какого-то незначительного "ляпа" не стоит.

Вообщем работаю с ДиректИкс.
cpp — файл
#include "StdAfx.h"
#include "defs.h"

хидер defs.h
#ifndef DEFS_H
#define DEFS_H
HWND hWnd = NULL;
LPDIRECTDRAW g_lpDD = NULL; // указатель на девайс
LPDIRECTDRAWSURFACE g_lpSPrimary = NULL; // поверхности: первичная и бэк
LPDIRECTDRAWSURFACE g_lpSBack = NULL;
#endif

копилируем и опа: 1 ошибка — неправильно стоит или нет точки-с-запятой
2 ошибка — LPDIRECTDRAWSURFACE не storage-class (типа этого)
3 уже не помню
Re[8]: StdAfx.cpp & StdAfx.h, что такое и как избавиться?
От: OlegO Россия http://www.mediachase.ru
Дата: 03.12.01 07:41
Оценка:
Здравствуйте CC, Вы писали:

CC>Здравствуйте Brother, Вы писали:


CC>Вообщем работаю с ДиректИкс.

CC>cpp — файл
CC>#include "StdAfx.h"
CC>#include "defs.h"

CC>хидер defs.h

CC>#ifndef DEFS_H
CC>#define DEFS_H
CC>HWND hWnd = NULL;
CC>LPDIRECTDRAW g_lpDD = NULL; // указатель на девайс
CC>LPDIRECTDRAWSURFACE g_lpSPrimary = NULL; // поверхности: первичная и бэк
CC>LPDIRECTDRAWSURFACE g_lpSBack = NULL;
CC>#endif

во-первых в заголвке нет включений на файлы с объявлением LPDIRECTDRAW.
во-вторых насколько я помню, переменные как таковые не получится определить в загловке Visual C++,
поэтому пишем, так: (должно заработать)

//хидер defs.h
#ifndef DEFS_H
#define DEFS_H

#incluide <ddraw.h> // где лежит LPDIRECTDRAW, LPDIRECTDRAWSURFACE

extern HWND hWnd;
extern LPDIRECTDRAW g_lpDD; // указатель на девайс
extern LPDIRECTDRAWSURFACE g_lpSPrimary; // поверхности: первичная и бэк
extern LPDIRECTDRAWSURFACE;
#endif


//cpp - файл
#include "StdAfx.h"
#include "defs.h"

HWND hWnd = NULL;
LPDIRECTDRAW g_lpDD = NULL; // указатель на девайс
LPDIRECTDRAWSURFACE g_lpSPrimary = NULL; // поверхности: первичная и бэк
LPDIRECTDRAWSURFACE g_lpSBack = NULL;
С уважением, OlegO.
Re[4]: StdAfx.cpp & StdAfx.h, что такое и как избавиться?
От: emalex Беларусь  
Дата: 03.12.01 11:21
Оценка:
Здравствуйте IT, Вы писали:

IT>Ну раз не нужны, то удали их из проекта, и не забудь для всех cpp файлов проекта в Menu->Project->Settings->C/C++->Category->Precompiled Headers выставить флажок Not using precompiled headers.


Подскажите пожалуйста, как компилятор узнает, что вместо <somthing.h> надо подключать библиотеку somthing.lib или что он там подключает?
Re[5]: StdAfx.cpp & StdAfx.h, что такое и как избавиться?
От: sasha Грузия  
Дата: 03.12.01 11:45
Оценка:
Здравствуйте emalex, Вы писали:

E>Подскажите пожалуйста, как компилятор узнает, что вместо <somthing.h> надо подключать библиотеку somthing.lib или что он там подключает?


А никак. somthing.lib ты подключаешь сам в настройках проекта. А вместо <somthing.h> он просто
вставляет в файл код из somthing.h.
Re[6]: StdAfx.cpp & StdAfx.h, что такое и как избавиться?
От: Sasparella США  
Дата: 03.12.01 14:57
Оценка:
Здравствуйте sasha, Вы писали:

S>Здравствуйте emalex, Вы писали:


E>>Подскажите пожалуйста, как компилятор узнает, что вместо <somthing.h> надо подключать библиотеку somthing.lib или что он там подключает?


S>А никак. somthing.lib ты подключаешь сам в настройках проекта. А вместо <somthing.h> он просто

S>вставляет в файл код из somthing.h.

А еще бывает что в SomeThing.h прописано что-то типа

#pragma comment(lib,"SomeThing.lib")


ТОгда все само получается... Но это не совсем честно. Ибо может мне только определения сейчас нужны.....


Саша.
Re[9]: StdAfx.cpp & StdAfx.h, что такое и как избавиться?
От: CC  
Дата: 03.12.01 16:06
Оценка:
Здравствуйте OlegO, Вы писали:

OO>Здравствуйте CC, Вы писали:


CC>>Здравствуйте Brother, Вы писали:


CC>>Вообщем работаю с ДиректИкс.

CC>>cpp — файл
CC>>#include "StdAfx.h"
CC>>#include "defs.h"

CC>>хидер defs.h

CC>>#ifndef DEFS_H
CC>>#define DEFS_H
CC>>HWND hWnd = NULL;
CC>>LPDIRECTDRAW g_lpDD = NULL; // указатель на девайс
CC>>LPDIRECTDRAWSURFACE g_lpSPrimary = NULL; // поверхности: первичная и бэк
CC>>LPDIRECTDRAWSURFACE g_lpSBack = NULL;
CC>>#endif

OO>во-первых в заголвке нет включений на файлы с объявлением LPDIRECTDRAW.

OO>во-вторых насколько я помню, переменные как таковые не получится определить в загловке Visual C++,
OO>поэтому пишем, так: (должно заработать)

OO>
OO>//хидер defs.h
OO>#ifndef DEFS_H
OO>#define DEFS_H

OO>#incluide <ddraw.h> // где лежит LPDIRECTDRAW, LPDIRECTDRAWSURFACE

OO>extern HWND hWnd;
OO>extern LPDIRECTDRAW g_lpDD; // указатель на девайс
OO>extern LPDIRECTDRAWSURFACE g_lpSPrimary; // поверхности: первичная и бэк
OO>extern LPDIRECTDRAWSURFACE;
OO>#endif
OO>


OO>
OO>//cpp - файл
OO>#include "StdAfx.h"
OO>#include "defs.h"

OO>HWND hWnd = NULL;
OO>LPDIRECTDRAW g_lpDD = NULL; // указатель на девайс
OO>LPDIRECTDRAWSURFACE g_lpSPrimary = NULL; // поверхности: первичная и бэк
OO>LPDIRECTDRAWSURFACE g_lpSBack = NULL;
OO>


а что это за extern и зачем он нужен?
Re[10]: StdAfx.cpp & StdAfx.h, что такое и как избавиться?
От: OlegO Россия http://www.mediachase.ru
Дата: 03.12.01 16:16
Оценка:
Здравствуйте CC, Вы писали:

CC>Здравствуйте OlegO, Вы писали:


OO>>Здравствуйте CC, Вы писали:


CC>>>Здравствуйте Brother, Вы писали:


CC>>>Вообщем работаю с ДиректИкс.

CC>>>cpp — файл
CC>>>#include "StdAfx.h"
CC>>>#include "defs.h"

CC>>>хидер defs.h

CC>>>#ifndef DEFS_H
CC>>>#define DEFS_H
CC>>>HWND hWnd = NULL;
CC>>>LPDIRECTDRAW g_lpDD = NULL; // указатель на девайс
CC>>>LPDIRECTDRAWSURFACE g_lpSPrimary = NULL; // поверхности: первичная и бэк
CC>>>LPDIRECTDRAWSURFACE g_lpSBack = NULL;
CC>>>#endif

OO>>во-первых в заголвке нет включений на файлы с объявлением LPDIRECTDRAW.

OO>>во-вторых насколько я помню, переменные как таковые не получится определить в загловке Visual C++,
OO>>поэтому пишем, так: (должно заработать)

OO>>
OO>>//хидер defs.h
OO>>#ifndef DEFS_H
OO>>#define DEFS_H

OO>>#incluide <ddraw.h> // где лежит LPDIRECTDRAW, LPDIRECTDRAWSURFACE

OO>>extern HWND hWnd;
OO>>extern LPDIRECTDRAW g_lpDD; // указатель на девайс
OO>>extern LPDIRECTDRAWSURFACE g_lpSPrimary; // поверхности: первичная и бэк
OO>>extern LPDIRECTDRAWSURFACE;
OO>>#endif
OO>>


OO>>
OO>>//cpp - файл
OO>>#include "StdAfx.h"
OO>>#include "defs.h"

OO>>HWND hWnd = NULL;
OO>>LPDIRECTDRAW g_lpDD = NULL; // указатель на девайс
OO>>LPDIRECTDRAWSURFACE g_lpSPrimary = NULL; // поверхности: первичная и бэк
OO>>LPDIRECTDRAWSURFACE g_lpSBack = NULL;
OO>>


CC>а что это за extern и зачем он нужен?


Оно говорит, другим модулям при компиляции, что где-то есть определение этих переменных
и они будут установленны на этапе линковки.
С уважением, OlegO.
Re[5]: StdAfx.cpp & StdAfx.h, что такое и как избавиться?
От: Кодт Россия  
Дата: 13.12.01 12:30
Оценка:
Здравствуйте Аноним, Вы писали:

А>>>Да не нужны они мне.

А>Зря, между прочим. Это фишка без особого вреда для всего остального позволяет сократить время компиляции проекта в 5-10-20 раз. Отчего этим не пользоваться?

Насчет "зря" — это как сказать.
В проекте, с которым я работаю, (87 DLLей) эти гребаные StdAfx плодят нечто ужасное. Исходники — 10 МБ, obj — около 50 МБ, pch (precompiled header) — 700 МБ!!!

А самая подлянка, что нельзя сделать один Pch на весь проект.
Ведь их смысл был в том, чтобы по многу раз не парсить <windows.h> и т.п.
Отключишь — начинаются тормоза. Включишь — пц винчестеру. Компилятор, похоже, старается развернуться на всем доступном пространстве.

Может, как-то этого избежать, только не знаю как?
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.