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 :

invalid application of ‘sizeof’ to incomplete type ‘struct pam_handle’


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 630
    Par défaut invalid application of ‘sizeof’ to incomplete type ‘struct pam_handle’
    Bonjour,
    j'ai le message d'erreur suivante à la compilation :
    invalid application of ‘sizeof’ to incomplete type ‘struct pam_handle’

    dans mon fichier loginh.h j'ai defini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef struct pam_handle pam_handle_t; // une structure dont la definition et le fichier qui la contient est tenu secrète.
    typedef struct login_handle login_handle_t;
     
    struct login_handle{
      unsigned int use_lp;
      unsigned int use_sc;
      pam_handle_t  *login_pamh;
      //pkcs11_handle_t *sc_ph; //a gerer
    };
    dans pam_pkcs11.c, j'inclut loginh.h, j'alloue de la mémoire avec malloc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     login_handle_t *lh;
      lh->login_pamh = (pam_handle_t *)malloc(sizeof(pam_handle_t));
    puis j'ai réessayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     login_handle_t *lh;
      lh->login_pamh = (pam_handle_t *)malloc(sizeof(struct pam_handle));
    mais j'obtiens toujours la meme erreur.

    - Que signifie cette erreur ?
    - Comment je dois corriger mon programme ?

    Merci d'avance pour votre aide

  2. #2
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Le type "struct pam_handle" (ou pam_handle_t) n'est pas défini (seulement déclaré). Un "sizeof" de cette structure ne peut être calculé (quelle taille ???).

    Il faut que, là où tu fais l'allocation, la définition de ce type soit connue (pour que le sizeof puisse donner/retourner qqch)

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 399
    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 399
    Par défaut
    Il est impossible de connaître la taille d'une structure déclarée sans être définie.

    Si le contenu de la structure est "tenu secret", alors tu dois fournir des fonctions pour allouer et désallouer ces structures.

    C'est comme pour FILE* : On ne fait jamais de malloc(sizeof(FILE)), seulement des fopen().
    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.

Discussions similaires

  1. sizeof(GooCanvasItem) / erreur incomplete type
    Par rollbich dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 21/10/2014, 09h52
  2. Réponses: 6
    Dernier message: 24/07/2009, 15h44
  3. est ce que existe type struct en java comme en c ?
    Par bill7 dans le forum Langage
    Réponses: 10
    Dernier message: 11/01/2006, 11h02
  4. Incomplete type
    Par bourbaki2003 dans le forum C++
    Réponses: 2
    Dernier message: 29/10/2005, 13h50
  5. Initialisation d'un tableau de type STRUCT
    Par Axiome dans le forum MFC
    Réponses: 4
    Dernier message: 06/09/2005, 11h58

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