2014-10-12 6 views
8

Когда я собирал эту программу (от C++ Язык программирования 4-е издание):Ошибка C1083: Не удается открыть файл включать: 'stdafx.h'

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. Как это исправить?

+4

Запуск вашего проекта Правильный путь часто составляет 99% битвы.Файл + Создать + Проект, Visual C++, Win32, выберите «Консольное приложение Win32». Теперь у вас есть файл stdafx.h со всеми параметрами компилятора, как и должно быть, чтобы использовать функцию прекомпилированных заголовков. Если книга не вела вас так, вам следует искать другую. Но это, вероятно, произошло. –

ответ

9

Вы должны правильно понять, что такое «stdafx.h», также известный как предварительно скомпилированный заголовок. Другие вопросы или Википедия ответят на это. Во многих случаях можно избежать прекомпилированного заголовка, особенно если ваш проект мал и имеет несколько зависимостей. В вашем случае, как вы, вероятно, начали с проекта шаблона, он использовался для включения Windows.h только для макроса _TCHAR.

Затем прекомпилирована заголовок обычно файл для каждого проекта в визуальном мире студии, так:

  1. Убедитесь, что вы есть файл «stdafx.h» в вашем проекте. Если вы этого не сделаете (например, вы его удалили), просто создайте новый временный проект и скопируйте его по умолчанию;
  2. Изменить #include <stdafx.h> на #include "stdafx.h". Предполагается, что это локальный файл проекта, который не должен быть разрешен в каталогах include.

Во-вторых: это нецелесообразно включать предкомпилированного заголовка в ваших собственных заголовков, чтобы не загромождать пространство имен другого источника, который может использовать свой код в качестве библиотеки, поэтому полностью удалить его включение в vector.h.

+0

После этих изменений https://imgur.com/2lgOJht – Kulis

+1

Все методы, которые вы определили в заголовке 'vector.h', не нашли символьный символ в главном исполняемом файле. Убедитесь, что вы действительно компилируете 'vector.cpp'. В visual studio: убедитесь, что 'vector.cpp' находится в фильтре« Исходные файлы »(вы видите его как папку). Или удалить и прочитать его в проекте. – ceztko

+0

Я сделал это. Теперь работает https://imgur.com/IXIyuwK – Kulis

5

Просто включите windows.h вместо stdfax или создайте чистый проект без шаблона.

2

Добавить #include "afxwin.h" в исходный файл. Это решит вашу проблему.

4

Для этого есть два решения.

Решение номер один: 1.Создание проекта. При создании проекта убедитесь, что предварительно скомпилированных заголовков проверяется (Настройки приложения ... *** Не проверять пустой проект)

Решение Номер два: 1.Create stdafx.h и stdafx.cpp в проекте 2 Right нажмите на проект -> свойства -> C/C++ -> предварительно скомпилированных заголовков 3.select прекомпилирована заголовок для создания (/ YC) 4.Rebuild решение

напишите мне сообщение, если вы столкнулись с какой-либо вопрос.

+1

Я создал эти пустые файлы в «решении номер два», а в «Свойства проекта» -> «Предварительно скомпилированный заголовок» оставлен пустым - я не выбрал 'Create (/ Yc)'. Я восстановил его, и все в порядке. –

Смежные вопросы