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 :

probleme de cast (?)


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 382
    Par défaut probleme de cast (?)
    Bonjour a tous !!

    j'ai un petit probleme avec une bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    struct tm *ltime;
    char timestr[16];
     
    /* convert the timestamp to readable format */
    ltime=localtime(&header->ts.tv_sec);
    strftime( timestr, sizeof timestr, "%H:%M:%S", ltime);
    J'ai pris ce code sur la documentation technique de winpcap 3.1. Il est donc censé compiler...

    Mais la, ca marche pas le compilateur m'indique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    error C2664: 'localtime' : cannot convert parameter 1 from 'const long *' to 'const time_t *'
            Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    Je ne comprends pourquoi. Si je fais, un cast (time_t * ), ca compil mais ca plante à l'utilisation dans le fichier time.inl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #pragma warning( disable : 4996 )
        return _localtime64(_Time);
    Quelqu'un peut il m'aider ??

    Merci d'avance !

  2. #2
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Salux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    time_t the_stamp;
     
    the_stamp = header->ts.tv_sec;
     
    ltime=localtime(&the_stamp);

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Par défaut
    Le type time_t n'est pas forcément mappé sur un long. Considérer le contraire donne le genre de bugs que tu as.

    Il semblerait que dans ton cas, ce soit un entier 64-bit (long = 32-bit) d'où le crash.

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    Attention, tu utilises un compilateur C++. Assure-toi que ton fichier possede l'extension .c afin d'utiliser un compilateur C.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 382
    Par défaut
    Merci pour vos reponses...

    Je ne peux pas utiliser l'extension .c car j'utilise des modules C++ dans mon fichier.

    Est il possible de spécifier que la fonction soit une fonction C dans mon fichier cpp ??

  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
    Il est possible:
    • De déclarer dans un header C++ une fonction comme étant "une fonction C" définie dans un source C
    • De déclarer et définir dans un source C++ une fonction C++ comme étant "une fonction appelable en C" du moment que le prototype est compilable en C (bref, si c'est une fonction indépendante qui prend des pointeurs en paramètre, c'est OK).


    La formule magique pour ces deux fonctionalité est extern "C" (utilisé en préfixe d'une fonction ou en bloc)
    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. Probleme de cast de string en int
    Par Oberown dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/04/2006, 11h48
  2. Réponses: 12
    Dernier message: 25/07/2005, 14h49
  3. [VB.NET][dataset][datagrid] probleme de Cast
    Par graphicsxp dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/05/2005, 14h18
  4. Probleme de cast de parametres
    Par John Fullspeed dans le forum Langage
    Réponses: 3
    Dernier message: 14/10/2004, 08h43
  5. probleme de cast
    Par gaut dans le forum C++
    Réponses: 9
    Dernier message: 06/08/2004, 18h43

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