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 :

Déclarer variable sous Visual C++


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Déclarer variable sous Visual C++
    Bon, ça fait des heures que je cherche, et je suis à deux doigts de péter un câble....

    J'essaye, tout bêtement, de déclarer une variable dans visual C++.
    Rien de bien folichon.

    Le problème, c'est que ce #$* IMPOSE de déclarer toutes les variables en début de fonction. Ou de créer des sous-sections avec accolades.

    HORS, c'est totalement contraire à toutes les règles de programmation en vigueur :

    C++ allows you to declare variables anywhere in a function. We encourage you to declare them in as local a scope as possible, and as close to the first use as possible. This makes it easier for the reader to find the declaration and see what type the variable is and what it was initialized to. In particular, initialization should be used instead of declaration and assignment, e.g.
    C'est d'autant plus gênant que les codes sources dont je dispose suivent à la lettre cette règle; je vais donc pas modifier toutes les déclarations de variables de tous les codes sources juste pour faire plaisir à monsieur Grosoft !

    Là j'ai plus d'idée...

  2. #2
    Membre émérite

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Points : 2 252
    Points
    2 252
    Par défaut
    Bonjour,
    2 idées :

    1) Vérifie que tous les fichiers ont bien pour extension .cpp et pas .c
    2) Vérifie dans les propriétés du projet que C++/Advanced/CompileAs est bien sur défaut et pas sur "Compile As C Code".

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Vérifie dans les propriétés du projet que C++/Advanced/CompileAs est bien sur défaut et pas sur "Compile As C Code".
    Fait, ça n'a rien changé.

    Vérifie que tous les fichiers ont bien pour extension .cpp et pas .c
    Fait, et ça marche !
    C'est un truc de ouf !
    Je croyais que la décision C/C++ se faisait dans les propriétés, mais on dirait que l'extension est la plus déterminante.
    vraiment délire....


    Merci pour le tuyau !

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 377
    Points : 23 663
    Points
    23 663
    Par défaut
    Citation Envoyé par Tractor Voir le message
    HORS, c'est totalement contraire à toutes les règles de programmation en vigueur :
    Ça s'écrit « Or » ! :-)

  5. #5
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par Tractor Voir le message
    Fait, et ça marche !
    C'est un truc de ouf !
    Je croyais que la décision C/C++ se faisait dans les propriétés, mais on dirait que l'extension est la plus déterminante.
    vraiment délire....
    Pas vraiment non, si la propriété était bien sur défaut. Avec ce réglage tu indiques justement d'utiliser le compilateur par défaut pour le type de fichier (donc C pour .c et C++ pour .cpp).

    Si tu forces le langage dans les propriétés (en utilisant les options "Compile as C code" ou "Compile as C++"), l'extension ne devrait pas avoir d'influence.

  6. #6
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    D'ailleurs, le C99 n'oblige plus à déclarer les variables au début des fonctions si ma mémoire est bonne, non ?

  7. #7
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par poukill Voir le message
    D'ailleurs, le C99 n'oblige plus à déclarer les variables au début des fonctions si ma mémoire est bonne, non ?
    Tout d'abord, il n'a jamais été obligatoire de déclaré en début de fonction, mais en début de bloc.

    Sinon ta mémoire est bonne, il n'y a plus de restriction en C99 mais Visual C++ n'est pas C99

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Ça s'écrit « Or » ! :-)
    Oui, mais j'étais Hors de moi...

    Si tu forces le langage dans les propriétés (en utilisant les options "Compile as C code" ou "Compile as C++"), l'extension ne devrait pas avoir d'influence.
    C'est pourtant bien ce que j'ai fait;
    Dans l'option : Compiler sous
    il y a : Compiler comme code C++ (/TP)

    Et pourtant ça n'a rien changé; c'est le passage à *.cpp qui a tout débloqué.

  9. #9
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par Tractor Voir le message
    C'est pourtant bien ce que j'ai fait;
    Dans l'option : Compiler sous
    il y a : Compiler comme code C++ (/TP)

    Et pourtant ça n'a rien changé; c'est le passage à *.cpp qui a tout débloqué.
    Tu as changer l'option dans les propriétés du fichier ou du projet ?

    Si tu le modifies uniquement dans les propriétés du projet, mais que dans les propriétés du fichier la valeur n'est pas à "<inherit from ...>", c'est la valeur de la propriété du fichier qui est prise en compte. Ce qui au passage est tout à fait normal.

    Le seul reproche que je ferais à Visual sur ce point c'est que lors de l'ajout d'un fichier au projet, la valeur de cette propriété pour le fichier soit valorisé à default et non à <inherit from ...> ce qui serait beaucoup plus logique.

    D'un autre côté vu le nombre de compilateur et d'outil qui se base (uniquement ou par défaut) sur l'extension du fichier pour différencier C et C++, il n'est pas très prudent d'utiliser .c pour des fichiers C++.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bon, tout s'explique.
    Effectivement, je n'ai changé les propriétés "que" au niveau du projet.
    D'ailleurs, j'avais même pas fait attention qu'il y avait aussi des propriétés au niveau du fichier, je croyais qu'elles héritaient toutes. Comme quoi....

    Merci pour ces explications !

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Si elles héritaient toutes, il serait alors plus difficile d'avoir des fichiers C et C++ dans le même projet...

    D'un autre côté, il y a le bug inverse dans IntelliSense, qui croit systématiquement que tout est compilé en C++, même les fichiers .c.
    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.

  12. #12
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 623
    Points : 30 648
    Points
    30 648
    Par défaut
    Salut,
    Citation Envoyé par Médinoc Voir le message
    D'un autre côté, il y a le bug inverse dans IntelliSense, qui croit systématiquement que tout est compilé en C++, même les fichiers .c.
    Ou quand la main droite ignore ce que fait la main gauche

    De toute évidence, l'équipe en charge de l'intellisense était absente le jour de la réunion où la décision a été prise
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. [AC-2000] Variable global sous Visual Basic
    Par Jason T dans le forum VBA Access
    Réponses: 2
    Dernier message: 10/06/2009, 15h19
  2. Variable membre ActiveX sous visual 2005
    Par ricky78 dans le forum MFC
    Réponses: 1
    Dernier message: 17/06/2008, 10h47
  3. Réponses: 2
    Dernier message: 02/11/2007, 17h44
  4. Réponses: 8
    Dernier message: 07/03/2007, 08h34
  5. [MSChart] creation de courbe sous visual C++
    Par gabriel knight dans le forum MFC
    Réponses: 5
    Dernier message: 18/09/2006, 14h32

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