Erreur C1083: Impossible d'ouvrir le fichier include: 'stdafx.h'
Lorsque j'ai compilé ce programme (à partir du Langage de Programmation C++ 4e édition):
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;
}
vecteur.h
#include <stdafx.h>
class vector{
public:
vector(int s);
double& operator[](int i);
int size();
private:
double* elem;
int sz;
};
Il m'a donné ces erreurs:
Je l'exécute sur Microsoft Visual Studio 2013, sur Windows 7. Comment résoudre ce problème?
source d'informationauteur Kulis
Vous devez vous connecter pour publier un commentaire.
Vous avez de bien comprendre ce qu'est une "stdafx.h", aka un en-tête précompilé. D'autres questions ou Wikipédia répondre. Dans de nombreux cas, un fichier d'en-tête peut être évitée, surtout si votre projet est de petite taille et avec peu de dépendances. Dans votre cas, comme vous l'avez probablement commencé à partir d'un modèle de projet, il a été utilisé pour inclure
Windows.h
seulement pour la_TCHAR
macro.Puis, un en-tête précompilé est normalement un dossier de projet dans Visual Studio monde, donc:
#include <stdafx.h>
à#include "stdafx.h"
. Il est censé être un projet local de fichier, de ne pas être résolus dans les répertoires include.Deuxièmement: il est déconseillé d'inclure l'en-tête précompilé dans vos propres en-têtes, de ne pas encombrer l'espace de noms d'autre source que l'on peut utiliser votre code comme une bibliothèque, pour enlever complètement de son inclusion dans
vector.h
.Il suffit d'inclure windows.h au lieu de stdfax ou créer un propre projet sans modèle.
Il y a deux solutions pour cela.
Solution numéro un:
1.Recréer le projet. Lors de la création d'un projet de veiller à ce que l'en-tête précompilé est cochée(paramètres de l'Application... *** Ne cochez pas la case vide de projet)
Solution Numéro deux:
1.Créer stdafx.h et stdafx.cpp dans votre projet
2 cliquez du bouton Droit sur le projet -> propriétés -> C/C++ -> Headers Précompilés
3.sélectionnez un en-tête précompilé pour créer(/Yc)
4.Reconstruire la solution
Envoyez-moi un message si vous rencontrez un quelconque problème.
Ajouter
#include "afxwin.h"
dans votre fichier source. Il permettra de résoudre votre problème.