Ошибка C1083: Не удается открыть файл include: 'stdafx.h'
Когда я скомпилировал эту программу (из 4-го выпуска С++ Programming Language):
main.cpp
#include <stdafx.h>
#include <iostream>
#include <cmath>
#include "vector.h"
using namespace std;
double sqrt_sum(vector&);
int _tmain(int argc, _TCHAR* argv[])
{
vector v(6);
sqrt_sum(v);
return 0;
}
double sqrt_sum(vector& v)
{
double sum = 0;
for (int i = 0; i != v.size(); ++i)
sum += sqrt(v[i]);
return sum;
}
vector.cpp
#include <stdafx.h>
#include "vector.h"
vector::vector(int s)
:elem{ new double[s] }, sz{ s }
{
}
double& vector::operator[](int i)
{
return elem[i];
}
int vector::size()
{
return sz;
}
vector.h
#include <stdafx.h>
class vector{
public:
vector(int s);
double& operator[](int i);
int size();
private:
double* elem;
int sz;
};
Он дал мне эти ошибки:
![errors]()
Я запускаю его на Microsoft Visual Studio 2013 в Windows 7. Как его исправить?
Ответы
Ответ 1
Вы должны правильно понять, что такое "stdafx.h", ака предварительно скомпилированный заголовок. Другие вопросы или Википедия ответят на это. Во многих случаях можно избежать прекомпилированного заголовка, особенно если ваш проект мал и имеет несколько зависимостей. В вашем случае, как вы, вероятно, начали с проекта шаблона, он был использован для включения Windows.h
только для макроса _TCHAR
.
Затем предварительно скомпилированный заголовок обычно представляет собой файл для каждого проекта в мире Visual Studio, поэтому:
- Убедитесь, что у вас есть файл "stdafx.h" в вашем проекте. Если вы этого не сделали (например, вы его удалили), просто создайте новый временный проект и скопируйте его по умолчанию;
- Измените
#include <stdafx.h>
на #include "stdafx.h"
. Предполагается, что это локальный файл проекта, который не должен быть разрешен в каталогах include.
Во-вторых: нецелесообразно включать предварительно скомпилированный заголовок в свои собственные заголовки, чтобы не загромождать пространство имен другого источника, который может использовать ваш код в качестве библиотеки, поэтому полностью удалите его включение в vector.h
.
Ответ 2
Просто включите windows.h вместо stdfax или создайте чистый проект без шаблона.
Ответ 3
Для этого есть два решения.
Решение номер один:
1.Создание проекта. При создании проекта убедитесь, что предварительно скомпилированный заголовок отмечен (настройки приложения... *** Не проверять пустой проект)
Решение Номер два:
1. Создайте stdafx.h и stdafx.cpp в своем проекте
2 Щелкните правой кнопкой мыши по проекту → Свойства → C/С++ → Предварительно скомпилированные заголовки
3. Выберите предварительно скомпилированный заголовок для создания (/Yc)
4.Установите решение
Оставьте мне сообщение, если у вас возникнут какие-либо проблемы.
Ответ 4
Добавьте #include "afxwin.h"
в исходный файл. Это решит вашу проблему.
Ответ 5
Вы можете решить эту проблему, добавив "$ (ProjectDir)" (или там, где находится stdafx.h) в список каталогов в Project-> Properties-> Конфигурация Properties-> C/C++-> General-> Additional Включить каталоги.
Ответ 6
Сар Джаг ответ был решением проблемы !!!
Ответ 7
Просто пробежался по учебному коду Visual Studio и столкнулся с похожей проблемой.
Замените #include "stdafx.h"
на #include "pch.h"
, который является обновленным именем для предварительно скомпилированных заголовков.