IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

debuter un projet sous Visual C++


Sujet :

Visual C++

  1. #1
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    Par défaut debuter un projet sous Visual C++
    Bonjour,

    Je viens d'ouvrir un projet TEST avec visual express 2008.

    Pouvais vous me dire a quoi servent les fichiers stdafx.h et targetver.h

    De plus j'ai creer un voiture.h mais j'ai peut etre oublier des bibliotheques

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class voiture
    {
    	protected:
    	char marque[10];
    	char modele[10];
    	int prix;
     
    	public:
    	void enregistrer_voiture ();
    	void vente_voiture ();
    	void baisse_du_prix ();
    };

    ensuite un voiture.cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <TEST/essai.h>
     
    void essai::enregistrer_voiture ()
    {
    }
     
    void essai::vente_voiture ()
    {
    }
     
    void essai::baisse_du_prix ()
    {
    }
    Voici les erreurs du compilateur:
    test/voiture.cpp(1) : warning C4627: '#include <TEST/essai.h>' : ignoré lors de la recherche d'une utilisation d'un en-tête précompilé

    test\voiture.cpp(21) : fatal error C1010: fin de fichier inattendue lors de la recherche d'un en-tête précompilé. N'auriez-vous pas oublié d'ajouter '#include "stdafx.h"' à votre source*?
    Ensuite j'ai un warning sur mon scanf dans le main
    This function or variable may be unsafe. Consider using scanf_s instead
    Est ce que j'ai encore oublier un #include??

    et pour finir je voudrais appeler les fonction de voiture dans le main. comment je fais? est ce qu'il faut remete un #include <TEST/essai.h>

    merci pour votre aide
    cortex59

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    targetver.h est un fichier d'en-tête contenant quelques directives de compilation en fonction de la version de Windows cible de l'application. Les versions les + anciennes de Windows n'ont pas autant de fonctions ou légèrement différentes que les versions plus récentes. La directive _WIN32_WINNT permet de choisir quelle version on cible. _WIN32_WINNT_ indique la version minimale de l'API win32 voulue.
    stdafx.h et stdafx.cpp servent pour la précompilation des en-têtes. C'est une optimisation de la compilation. En contrepartie, tout tes fichiers sources doivent commencer par inclure cet en-tête (ou spécifier dans les propriétés du projet qu'ils n'utilisent pas l'en-tête précompilé). Cf F.A.Q.. C'est à cause de cela que tu as ton premier avertissement et l'erreur.

    Pour scanf, le message me semble explicite. C'est une fonction jugée comme présentant des failles de sécurité. Le compilateur t'avertit du problème et te suggère d'utiliser une version maison de microsoft, scanf_s. Cette fonction n'est pas standard. Personnellement, je te suggère d'utiliser les flux C++ et les fonctions associées.

    Enfin, pour finir, si tu dois utiliser ta classe voiture dans main, et bien oui, il faut inclure le fichier d'en-tête pour que la classe soit connue au moment où tu veux l'utiliser. Chaque fichier source est compilé séparément, le compilateur ne garde pas en mémoire les définitions ni les déclarations entre 2 compilations successives de 2 fichiers différents. C'est pourquoi chaque fichier source doit explicitement inclure les fichiers d'en-têtes contenant la déclaration des symboles qu'il veut utiliser.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    Par défaut
    Bon j'ai ajouté :

    pour vehicule.h
    et vehicule.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include "stdafx .h"
    #include <TEST/essai.h>
    mais j'ai toujours l'erreur C1010 et des warnning
    >Compilation en cours...
    1>main.cpp
    1>voiture.cpp
    1>c:\users\c d@vid\documents\fac\programme\en c++\visual studio 2008\projects\test\test\voiture.cpp(1) : warning C4627: '#include "stdafx .h"' : ignoré lors de la recherche d'une utilisation d'un en-tête précompilé
    1> Ajoutez la directive à 'stdafx.h' ou régénérez l'en-tête précompilé
    1>c:\users\c d@vid\documents\fac\programme\en c++\visual studio 2008\projects\test\test\voiture.cpp(2) : warning C4627: '#include <TEST/essai.h>' : ignoré lors de la recherche d'une utilisation d'un en-tête précompilé
    1> Ajoutez la directive à 'stdafx.h' ou régénérez l'en-tête précompilé
    1>c:\users\c d@vid\documents\fac\programme\en c++\visual studio 2008\projects\test\test\voiture.cpp(22) : fatal error C1010: fin de fichier inattendue lors de la recherche d'un en-tête précompilé. N'auriez-vous pas oublié d'ajouter '#include "stdafx.h"' à votre source*?
    1>Génération de code en cours...
    1>Le journal de génération a été enregistré à l'emplacement "file://c:\Users\C D@vid\Documents\FAC\programme\EN C++\Visual Studio 2008\Projects\TEST\TEST\Debug\BuildLog.htm"
    1>TEST - 1 erreur(s), 2 avertissement(s)

    les flux dont tu me parlé c CIN et COUT c ca?

    merci

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 369
    Points
    50 369
    Par défaut
    C'est normal l'espace entre stdafx et .h dans ta directive #include ?

  5. #5
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    Par défaut
    Et OUI tous ca pour un espace

    merci

  6. #6
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Bonjour,
    targetver.h est un fichier d'en-tête contenant quelques directives de compilation en fonction de la version de Windows cible de l'application. Les versions les + anciennes de Windows n'ont pas autant de fonctions ou légèrement différentes que les versions plus récentes. La directive _WIN32_WINNT permet de choisir quelle version on cible. _WIN32_WINNT_ indique la version minimale de l'API win32 voulue.
    stdafx.h et stdafx.cpp servent pour la précompilation des en-têtes. C'est une optimisation de la compilation. En contrepartie, tout tes fichiers sources doivent commencer par inclure cet en-tête (ou spécifier dans les propriétés du projet qu'ils n'utilisent pas l'en-tête précompilé). Cf F.A.Q.. C'est à cause de cela que tu as ton premier avertissement et l'erreur.

    Pour scanf, le message me semble explicite. C'est une fonction jugée comme présentant des failles de sécurité. Le compilateur t'avertit du problème et te suggère d'utiliser une version maison de microsoft, scanf_s. Cette fonction n'est pas standard. Personnellement, je te suggère d'utiliser les flux C++ et les fonctions associées.

    Enfin, pour finir, si tu dois utiliser ta classe voiture dans main, et bien oui, il faut inclure le fichier d'en-tête pour que la classe soit connue au moment où tu veux l'utiliser. Chaque fichier source est compilé séparément, le compilateur ne garde pas en mémoire les définitions ni les déclarations entre 2 compilations successives de 2 fichiers différents. C'est pourquoi chaque fichier source doit explicitement inclure les fichiers d'en-têtes contenant la déclaration des symboles qu'il veut utiliser.
    Bonjour,

    L'espace dans "stdafx .h" est présent dans la FAQ, c'est pour ça que cortex59 a eu un soucis.

    Il faudrait corriger la FAQ

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/06/2009, 12h11
  2. Réponses: 2
    Dernier message: 30/04/2008, 09h20
  3. Problème pour loader un projet sous Visual Studio 2005
    Par SkyBioSS dans le forum Visual Studio
    Réponses: 5
    Dernier message: 04/04/2008, 17h02
  4. Lister le contenu d'un projet sous Visual Studio 2003
    Par JC-LGMS dans le forum Visual Studio
    Réponses: 4
    Dernier message: 30/10/2007, 15h00
  5. [Debutant] Erreur LNK2001 sous Visual.Net.
    Par Carosmagor dans le forum Visual C++
    Réponses: 9
    Dernier message: 11/05/2006, 08h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo