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 :

Contrainte de type forte


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 230
    Par défaut Contrainte de type forte
    Bonjour,

    je souhaite avoir un type que j'appellerais utf8string dans mon code et ce type serait un simple string. Ca je peux le faire facilement avec un typedef.
    Cependant ce que je veux est que le compilateur applique une vérification stricte sur le type transmis dans une fonction pour obliger à transmettre un utf8string et non un string.
    Tout ceci est purement formel mais comme j'ai environ 20.000 lignes de code et que je souhaite reprendre une partie de mon code pour y appliquer cette contrainte, obtenir une liste d'erreurs me permettrait de réaliser mes changements plus rapidement.

    Un petit exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void save_to_db(utf8string valeur);
     
    main() {
    string val("ma valeur encodée en MacRoman");
    save_to_db(val); //Ici je veux que la compilation échoue
    save_to_db(utf8string("Ma valeur encodée en UTF8")); //Ici ca compile
    }
    Est-ce qu'il existe une contrainte de ce type ou suis-je véritablement limité à l'utilisation d'un typedef ou d'une classe ?

    Merci à vous
    Esteban

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    d'une part en C le type string n'existe pas...

    Il y a char, char[], ou char*....

    Ensuite, pour obtenir une contrainte forte de ce type, tu te définis effectivement d'abord un type (via typedef), mais ensuite c'est à la comilation que tu peux lui mettre la contrainte avec le flag
    -Wstrict_prototypes

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 230
    Par défaut
    Ah ok je ne connaissais pas ce flag.
    Je me suis mal exprimé, je n'aurais pas du utiliser l'exemple de string mais le principe est le même. Je vais essayer avec ce flag !

    Merci !

Discussions similaires

  1. [Débutant] Les contraintes de type
    Par lerieure dans le forum C#
    Réponses: 8
    Dernier message: 13/07/2011, 14h58
  2. Réponses: 3
    Dernier message: 19/06/2009, 18h33
  3. contrainte de type logique sur un champ
    Par zegin dans le forum Langage SQL
    Réponses: 5
    Dernier message: 29/11/2007, 18h37
  4. [Sql] contrainte sur type date
    Par zchallal dans le forum Oracle
    Réponses: 2
    Dernier message: 19/06/2006, 13h57
  5. Réponses: 9
    Dernier message: 01/12/2005, 10h54

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