错误C1083:无法打开包含文件:'stdafx.h'

时间:2014-10-12 21:28:19

标签: c++ visual-studio visual-studio-2013 stdafx.h

当我编译这个程序时(来自C ++编程语言第4版):

的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

我在Windows 7上的Microsoft Visual Studio 2013上运行它。如何修复它?

6 个答案:

答案 0 :(得分:15)

你必须正确理解什么是&#34; stdafx.h&#34;,也就是预编译头。其他问题或维基百科将回答这个问题。在许多情况下,可以避免使用预编译的头文件,尤其是在项目很小且依赖性很小的情况下。在您的情况下,您可能从模板项目开始,它仅用于Windows.h宏的_TCHAR

然后,预编译的头文件通常是Visual Studio世界中的每个项目文件,因此:

  1. 确保您拥有文件&#34; stdafx.h&#34;在你的项目中。如果你没有(例如你删除它),只需创建一个新的临时项目并从那里复制默认项目;
  2. #include <stdafx.h>更改为#include "stdafx.h"。它应该是一个项目本地文件,不能在include目录中解析。
  3. 其次:不建议在您自己的标头中包含预编译的标头,以免混淆可以将您的代码用作库的其他源的名称空间,因此请完全删除它在vector.h中的包含。< / p>

答案 1 :(得分:8)

只需包含windows.h而不是stdfax,或者创建一个没有模板的干净项目。

答案 2 :(得分:6)

有两种解决方案。

第一个解决方案: 1.重新创建项目。创建项目时,请确保选中预编译的标题(应用程序设置... ***不检查空项目)

解决方案二: 1.在项目中创建stdafx.h和stdafx.cpp 2右键单击项目 - &gt;属性 - &gt; C / C ++ - &gt;预编译标题 3.选择预编译头来创建(/ Yc) 4.重建解决方案

如果您遇到任何问题,请给我留言。

答案 3 :(得分:2)

在源文件中添加#include "afxwin.h"。它将解决您的问题。

答案 4 :(得分:0)

您可以通过在项目->属性->配置属性-> C / C ++->常规->其他包含下的目录列表中添加“ $(ProjectDir)”(或stdafx.h所在的位置)来解决此问题。目录。

答案 5 :(得分:-1)

仅在运行Visual Studio Code教程时就遇到了类似的问题。

Mto nda I whaecdt Atsr Swra in hte ienamc, ti wsa nfu! 替换为#include "stdafx.h",这是预编译标头的更新名称。