1. ホーム
  2. c++

[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'

2022-01-19 23:01:09

質問

このプログラムをコンパイルすると(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;
}

ベクトル.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;
};

このようなエラーが出てしまいました。

Microsoft Visual Studio 2013、Windows 7で動かしています。どのようにそれを修正するのですか?

解決方法を教えてください。

stdafx.h"、別名プリコンパイルヘッダーとは何か、正しく理解する必要があります。他の質問かウィキペディアが答えてくれるでしょう。多くの場合、プリコンパイルされたヘッダは、特にプロジェクトが小さく、依存関係が少ない場合、避けることができます。あなたの場合、おそらくテンプレート・プロジェクトから始めたので、プリコンパイルされたヘッダを使うことになります。 Windows.h に対してのみ _TCHAR マクロを使用します。

それから、プリコンパイルされたヘッダーは、Visual Studioの世界では通常、プロジェクト単位のファイルなので。

  1. プロジェクトに "stdafx.h" があることを確認します。もしない場合(例えば削除した場合)、新しい一時的なプロジェクトを作成し、そこからデフォルトのものをコピーしてください。
  2. を変更します。 #include <stdafx.h> から #include "stdafx.h" . これは、プロジェクトのローカルファイルであり、インクルードディレクトリで解決されるものではないはずです。

次に、プリコンパイルされたヘッダを自分のヘッダに含めることは、あなたのコードをライブラリとして使用できる他のソースの名前空間を混乱させないために、望ましくありません。 vector.h .