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 :

Eviter conversions implicites et déclarations implicites


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut Eviter conversions implicites et déclarations implicites
    Bonjour à tous !

    Je suis nouveau dans cette section et j'ai décidé d'apprendre le C (enfin !). Je parcours d'ores et déjà les tutoriels sur le net et j'en apprends beaucoup

    Cependant j'ai toujours une notion de POO dans mon crâne et ce n'est pas facile pour moi d'apprendre le C en maîtrisant assez bien le vb.net

    Donc une question très conne :

    Existe t-il en C un instruction permettant d'éviter de faire des conversions implicites ? et les déclarations implicites ?

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'En vb.net c'était :
    Option Explicit On
    Option Strict On
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Conversions implicites : selon les types mis en jeu, elles sont faites automatiquement (short -> int, ...). Mais de manière générale, il faut caster

    Déclarations implicites : n'existent pas dans un vrai langage compilé
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  3. #3
    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
    1. S'il faut caster, alors ce n'est pas implicite.
      On ne peut pas désactiver les conversions implicites en C, mais il y en a beaucoup moins qu'en VB (notamment, short->int est implicite mais pas int->short, etc.)
    2. Les standards C précédents C99 autorisent les déclarations implicites de fonction, hélas.
      Sous gcc, tu peux compiler en mode C99. Tu peux aussi activer les warnings appropriés (gcc) ou augmenter le niveau de warnings (Visual).
    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.

  4. #4
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Ok merci pour l'info

    J'utilise code::block en anglais et où puis je activer les warnings pour éviter les erreurs ?
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  5. #5
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    Citation Envoyé par Aspic Voir le message
    Ok merci pour l'info

    J'utilise code::block en anglais et où puis je activer les warnings pour éviter les erreurs ?

    Bon avec Code::Blocks c'est facile, il suffit de coché la case "Enable all compiler warnings (overrides every other setting ) [-Wall]" dans le "project build option" et voila....

    si vous ete dans un environement LINUX avec des Makefile et tous ça, il sufft d'ajouter l'option -Wall au compilateur...

  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
    -Wall est rarement suffisant.
    Il convient généralement d'ajouter -Wextra et -Wwrite-strings.

    http://emmanuel-delahaye.developpez....tm#cfg_compilo
    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. Réponses: 1
    Dernier message: 24/04/2009, 18h27
  2. Réponses: 1
    Dernier message: 24/04/2009, 18h27
  3. Déclaration implicite dans la fonction main
    Par bipbip2006 dans le forum Débuter
    Réponses: 6
    Dernier message: 19/04/2008, 16h29
  4. Réponses: 1
    Dernier message: 04/10/2006, 09h01
  5. [jdbc][oracle] conversion implicite erronée
    Par Jack Huser dans le forum JDBC
    Réponses: 2
    Dernier message: 30/06/2005, 10h23

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