Ошибка 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", который является обновленным именем для предварительно скомпилированных заголовков.