FakiNyan написав:а нащо воно тре, і яка різниця, що з ним, а що без нього?
Є така штука, як precompiled headers (Вам домашнє завдання — перекладіть цю статтю enwiki->українська вікіпедія, бо я геть не маю на те часу).
Компілятор переганяє h-файли у своє власне внутрішнє представлення (вже у вигляді різних геш-таблиць, inline-функцій у внутрішньому проміжному форматі, …), записує у файл і використовує це при наступних компіляціях для пришвидшення роботи.
Але тут головне у правильному місці зупинитися, інакше ці файли передкомпільованих заголовків будуть різні для кожного файлу проекту, займуть купу місця на вінчестері, при дрібних змінах ±h-файл мінятимуться (вимагатимуть перекомпіляції) і ефект зменшиться у тому числі через зайві шарудіння диском.
Зазвичай у великих проектах дуже багато файлів потребують немалої кількості однакових h-файлів (ОС, тулкіти, …), але для розшарювання передкомпільованих заголовків між ними треба, щоб набори були зовсім однакові (кількість і порядок). Все, що вище того, краще компілювати кожен раз із самим файлом.
Ну от оцей stdafx.h призначений для гарантування такої однаковості стандартного (для даної програми) набору заголовків і їхнього порядку. Все спільне для всіх файлів проекту та ще таке, що дуже рідко міняється — у той файл, а вже його — на початок кожного файлу коду.