Fout C1083: Kan include-bestand niet openen: ‘stdafx.h’

Toen ik dit programma compileerde (van C++ Programming Language 4e editie):

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;
};

Het gaf me deze fouten:

fouten

Ik draai het op Microsoft Visual Studio 2013, op Windows 7. Hoe repareer ik het?


Antwoord 1, autoriteit 100%

Je moet goed begrijpen wat een “stdafx.h” is, oftewel een voorgecompileerde header. Andere vragen of Wikipedia zullen dat beantwoorden. In veel gevallen kan een voorgecompileerde header worden vermeden, vooral als uw project klein is en weinig afhankelijkheden heeft. In jouw geval, zoals je waarschijnlijk bent begonnen met een sjabloonproject, werd het gebruikt om Windows.halleen op te nemen voor de _TCHAR-macro.

De voorgecompileerde header is dan meestal een bestand per project in de Visual Studio-wereld, dus:

  1. Zorg ervoor dat u het bestand “stdafx.h” in uw project heeft. Als je dat niet doet (je hebt het bijvoorbeeld verwijderd), maak dan gewoon een nieuw tijdelijk project aan en kopieer het standaardproject van daaruit;
  2. Verander de #include <stdafx.h>in #include "stdafx.h". Het wordt verondersteld een lokaal projectbestand te zijn, dat niet moet worden opgelost in include-mappen.

Ten tweede: het is niet aan te raden om de vooraf gecompileerde koptekst in uw eigen kopteksten op te nemen, om de naamruimte van andere bronnen die uw code als bibliotheek kunnen gebruiken niet te vervuilen, dus verwijder de opname ervan in vector.hvolledig.


Antwoord 2, autoriteit 50%

Neem gewoon windows.h op in plaats van stdfax of maak een schoon project zonder sjabloon.


Antwoord 3, autoriteit 40%

Er zijn twee oplossingen voor.

Oplossing nummer één:
1.Maak het project opnieuw. Zorg er bij het maken van een project voor dat de voorgecompileerde koptekst is aangevinkt (Applicatie-instellingen… *** Leeg project niet aanvinken)

Oplossing nummer twee:
1.Maak stdafx.h en stdafx.cpp aan in uw project
2 Klik met de rechtermuisknop op project -> eigenschappen -> C/C++ -> Voorgecompileerde headers
3.select voorgecompileerde koptekst om te maken (/Yc)
4. Herbouw de oplossing

Stuur me een bericht als je een probleem tegenkomt.


Antwoord 4, autoriteit 20%

U kunt dit probleem oplossen door “$(ProjectDir)” (of waar de stdafx.h zich ook bevindt) toe te voegen aan de lijst met mappen onder Project->Properties->Configuration Properties->C/C++->General ->Extra mappen opnemen.


Antwoord 5, autoriteit 15%

Voeg #include "afxwin.h"toe aan je bronbestand. Het zal uw probleem oplossen.


Antwoord 6

Ik heb net een Visual Studio Code-tutorial doorgenomen en kwam een ​​soortgelijk probleem tegen.

Vervang #include "stdafx.h"door #include "pch.h"wat de bijgewerkte naam is voor de vooraf gecompileerde headers.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes