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

C++ Discussion :

Erreur C4430 sur code Microsoft


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Par défaut Erreur C4430 sur code Microsoft
    Bonjour à tous,

    J'essaie de compiler sur un XP SP3 l'exe vshadow contenu dans le VSS SDK. J'ai installer le plateform SDK 2008, le plateform SDK 2003 pour avoir les include ATL et Visual C++.

    Je n'ai pas (encore) modifier le code source que j'ai l'erreur suivante à la compilation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    shadow.cpp(30) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    Voici le code incriminé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    extern "C" __cdecl wmain(int argc, WCHAR ** argv)
    {
        FunctionTracer ft(DBG_INFO);
        CommandLineParser obj;
     
        try
        {
            ft.WriteLine(
                L"\n"
                L"VSHADOW.EXE 2.2 - Volume Shadow Copy sample client\n"
                L"Copyright (C) 2005 Microsoft Corporation. All rights reserved.\n"
                L"\n"
                );
    La ligne 30 est la première accolade ouvrante, à la deuxième ligne de code.
    J'ai essayer de mettre class devant extern "C"...
    Je ne vois pas quel type je dois définir.

    D'avance merci pour toute piste

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Il manque le type de retour de wmain() :
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    extern "C" int __cdecl wmain(int argc, wchar_t **argv)
    Oublier le type de retour de main() est une erreur commune, et visual ne dit rien quand il s'agit de main(). Je suppose que pour wmain() il gueule quand même, et ceux qui ont traduit le code ne s'en sont mystérieusement pas rendus compte...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Par défaut
    Bonjour,

    Merci de ta réponse. C'est une bonne piste, mais j'ai toujours du mal avec le C et le C++.
    J'ai modifier le WCHAR en wchar_t, l'éditeur l'a coloré, mais j'ai toujours la même erreur à la compilation.
    J'ai regarder sur msdn comment on doit utiliser wmain():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] )
    Par déduction, *argv[] ce doit être les arguments qu'on passe à l'exécution, mais le *envp[], c'est pas pour des variables d'environnements? Il est optionnel, ou bien il le faut à tout prix dans wmain()?

    Parceque là, il n'y est pas...

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Vu que wmain() est en __cdecl, tu peux le considérer comme optionnel.
    De plus, il n'est pas standard: C'est une extension. Donc, le wmain() peut n'avoir que deux paramètres (ou aucun).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Par défaut
    Est-ce que ça pourrais venir du fait que j'ai installé deux plateform SDK différents? J'ai le 2003 et le 2008, et dans la config de VS++ express, il ne me donne que des variable d'environnement, je ne sais pas ou elle pointent

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    On s'en moque, de ça.
    As-tu rajouté le type int entre extern "C" et __cdecl ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. erreur 438 sur code VBA
    Par Gamack dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/08/2014, 19h58
  2. [AC-2003] Erreur Compilation sur code
    Par Aladin_23 dans le forum VBA Access
    Réponses: 3
    Dernier message: 14/10/2011, 13h25
  3. [AC-2002] Erreur 91 sur code VBA
    Par volganne dans le forum VBA Access
    Réponses: 6
    Dernier message: 02/09/2010, 14h03
  4. Erreur LNK2019 sur fonction Microsoft
    Par ThePlug dans le forum MFC
    Réponses: 4
    Dernier message: 21/08/2006, 21h57
  5. [IE]Erreur javascript sur un code de 2 lignes...
    Par narnou dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 11/05/2006, 17h20

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