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 :

argv et pointeur de type void [Débutant(e)]


Sujet :

C

  1. #1
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut argv et pointeur de type void
    Bonjour,

    Ma question porte sur l'argv du main(). Je suis toujours sur la compréhension d'un code qui utilise des arguments puis stocke une partie de ceux-ci dans une structure dont un élément est un pointeur de type void.
    Les arguments sont des chaines des caractères.
    A un moment dans le code on passe par un switch() pour valoriser le pointeur. Dans un cas on passe directement l'argurment, dans un autre cas on passe une adresse.
    Pourquoi l'adresse n'est-elle pas specifiée dans le cas de l'argument ?

    UCHAR -> unsigned char
    ULONG -> unsigned long
    PVOID -> pointeur de type void

    La structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    struct HWMCA_DATATYPE_S {         
       UCHAR                 ucType;                              
       ULONG                 ulLength;
       PVOID                 pData;   
       struct HWMCA_DATATYPE_S *pNext;
    };
    La partie du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    int main(int argc, char *argv[], char *envp[]) {
    ----
    typedef struct HWMCA_DATATYPE_S HWMCA_DATATYPE_T;
    HWMCA_DATATYPE_T    aHwmcaDataType[10];
    ULONG               aulCmdData[10];
    ---
    ----
    switch (aHwmcaDataType[j].ucType) {                   
       case HWMCA_TYPE_OCTETSTRING:                       
          aHwmcaDataType[j].ulLength = strlen(argv[i+1])+1;
          aHwmcaDataType[j].pData    = argv[i+1];
          break;
       case HWMCA_TYPE_NULL:                       
          aHwmcaDataType[j].ulLength = 0;          
          aHwmcaDataType[j].pData    = (PVOID)NULL;
          break;
       default:                                       
          aHwmcaDataType[j].ulLength = sizeof(ULONG); 
          aulCmdData[j]            = atol(argv[i+1]); 
          aHwmcaDataType[j].pData    = &aulCmdData[j];
          break;                                      
    } /* endswitch */ 
    --
    ---
    return (0)
    }
    En fait dans le switch pour le cas HWMCA_TYPE_OCTETSTRING on passe directement argv[i+1] à aHwmcaDataType[j].pData
    alors que dans le cas default on passe l'adresse de aulCmdData[j] à aHwmcaDataType[j].pData
    Pourquoi cette différence ?

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par défaut
    Parce que le type HWMCA_DATATYPE_S indique une liste chaînée de données brutes de type donné par ucType et de longueur nLength.
    • Si le type est "chaine d'octets", c'est le pointeur de la chaîne qui est stocké, aucune duplication n'est nécessaire.
    • Pour les autres types, la donnée est un ULONG. L'élément contient donc l'adresse du ULONG et nLength est la taille d'un ULONG. C'est logique.
    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.

  3. #3
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Cela veut dire que si je concatene des arguments argv[n] avec argv[n+1]
    dans une chaine de caractère on ne passe pas par l'adresse pour valoriser pdata car une chaine est un tableau de char ?
    ce code est-il valide pour un cas chaine d'octet (ajout de cmd)?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    int main(int argc, char *argv[], char *envp[]) {
    ----
    typedef struct HWMCA_DATATYPE_S HWMCA_DATATYPE_T;
    HWMCA_DATATYPE_T    aHwmcaDataType[10];
    ULONG               aulCmdData[10];
    -----
    char cmd[80];
    strcat(cmd,argv[i]);
    strcat(cmd,argv[i+1]);
    ---
    ---
    switch (aHwmcaDataType[j].ucType) {                   
       case HWMCA_TYPE_OCTETSTRING:                       
          aHwmcaDataType[j].ulLength = strlen(cmd)+1;
          aHwmcaDataType[j].pData    = cmd;
          break;
       case HWMCA_TYPE_NULL:                       
          aHwmcaDataType[j].ulLength = 0;          
          aHwmcaDataType[j].pData    = (PVOID)NULL;
          break;
       default:                                       
          aHwmcaDataType[j].ulLength = sizeof(ULONG); 
          aulCmdData[j]            = atol(argv[i+1]); 
          aHwmcaDataType[j].pData    = &aulCmdData[j];
          break;                                      
    } /* endswitch */ 
    --
    ---
    return (0)
    }

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par défaut
    Je n'ai rien compris à ton dernier post.
    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.

  5. #5
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Désolé, je vais essayé d'être plus clair dans mon propos.

    J'essai d'utiliser un code qui utilise cette structure. Dans la doc accompagnant ce code pour réaliser l'action que je veux faire il est dit que :

    ucType doit ëtre de type octetstring (correspondant à la valeur 4)
    ulLength doit être valorisé à la longueur de la chaine + le caractère de fin de chaine
    pData est un pointeur vers la chaine de caractères.
    pnext doit être NULL puisqu'il n'y à plus d'argument attendu.

    En fait j'ai un doute sur la façon de valoriser les éléments de la structure.

    Je passe ucType en temps d'argument au pgm (argument 5 du pgm)

    Je passe la chaine de caractères (qui contient un espace) également en temps d'argument. Celle-ci contenant un espace elle se prise comme étant 2 arguments différents. (arguments 6 et 7 du pgm)
    ex:
    pgm toto 44 toto 44 4 forum bonjour

    la structure
    UCHAR -> unsigned char
    ULONG -> unsigned long
    PVOID -> pointeur de type void
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    struct HWMCA_DATATYPE_S {         
       UCHAR                 ucType;                              
       ULONG                 ulLength;
       PVOID                 pData;   
       struct HWMCA_DATATYPE_S *pNext;
    };
    Lors de la valorisation de la structure je fais les opérations suivantes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    int main(int argc, char *argv[], char *envp[]) {
    ---
    char Opercmd[80];
    char space =' ';
    typedef struct HWMCA_DATATYPE_S HWMCA_DATATYPE_T;
    HWMCA_DATATYPE_T    aHwmcaDataType[10];
    ---
    /*valorisation des élements de la structure */
       memset(&aHwmcaDataType[j],'\0',HWMCA_DATATYPE_SIZE);         
       switch (aHwmcaDataType[j].ucType) {                    
          case HWMCA_TYPE_OCTETSTRING:                        
                 aHwmcaDataType[j].ucType = (UCHAR)atoi(argv[5]);
                 strcpy(OperCmd,argv[6];
                 strcat(Opercmd,Space);   
                 strcat(Opercmd,argv[7];
                 aHwmcaDataType[j].ulLength = strlen(Opercmd)+1;
                 aHwmcaDataType[j].pData    = Opercmd;
                 aHwmcaDataType[j].pNext = NULL;
                 break;
         default :
                break;
         }  
       ----
       ----
    return(0)
    }
    Je pense que les éléments pNext, ucType et ulLength sont correctement valorisés, mais j'ai un doute pour pData. (je ne peux pas tester le code!!)

    Ma question est Opercmd étant un tableau de char en codant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    aHwmcaDataType[j].pData    = Opercmd;
    Est-ce que je passe bien au pointeur pData l'adresse du premier élément du tableau puisque Opercmd est un tableau de char, ou suis je obligé de coder
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    aHwmcaDataType[j].pData    = &Opercmd;

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par défaut
    D'après c equi est indiqué dans la définition des valeurs de la structure, =Opercmd devrait être bon.
    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.

  7. #7
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Merci pour vos répone, j'ai une dernière question à propos du pData de cette structure.
    Suivant les cas de figure ce pointeur peut contenir l'adresse d'une chaine de char ou d'une valeur numérique (celui-ci étant de type void)

    A t'on le droit de coder pour valoriser pData
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #define HWMCA_TRUE 1;
    int main(int argc, char *argv[], char *envp[]) {
    ----
    ---
    aHwmcaDataType[j].pData    = (PVOID)HWMCA_TRUE;
    ----
    ----
    return(0);
    }
    ou encore pour pData
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    aHwmcaDataType[j].pData    = &HWMCA_TRUE;
    j'ai vraiment un doute, car j'ai lu que la directive #DEFINE definie une constante de preprocesseur. Mais j'ai rien trouvé sur la façon de la passer cette constante à un pointeur. Je suppose que la notation correcte serait de passer l'adresse de cette constante au pointeur par : &HWMCA_TRUE

    Pourriez m'éclairer sur ce point, un DEFINE preprocesseur est il à considérer comme une simple variable constante ?

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par défaut
    Non, tu ne peux pas faire ça.
    Si tu veux faire une HWMCA_DATATYPE_S contenant HWMCA_TRUE, tu dois utiliser un ucType indiquant un type entier ou booléen, faire pointer pData vers un entier contenant la valeur HWMCA_TRUE, et donner la taille de l'entier en question dans ulLength.
    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.

  9. #9
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Donc si j'ai bien compris pour un type INTERGER
    Dans le cas ou la valeur de l'argument argv[5] serait un chiffre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    #DEFINE HWMCA_TRUE 1
    int main(int argc, char *argv[], char *envp[]) {
    ---
    int nbre =0;
    typedef struct HWMCA_DATATYPE_S HWMCA_DATATYPE_T;
    HWMCA_DATATYPE_T    aHwmcaDataType[10];
    ---
    /*valorisation des élements de la structure */
       memset(&aHwmcaDataType[j],'\0',HWMCA_DATATYPE_SIZE); 
       aHwmcaDataType[j].ucType = (UCHAR)atoi(argv[5]);        
       switch (aHwmcaDataType[j].ucType) {                    
         case HWMCA_TYPE_INTEGER:                        
                 Nbre = HWMCA_TRUE;
                 aHwmcaDataType[j].ulLength = strlen(Nbre);
                 aHwmcaDataType[j].pData    = &Nbre;
                 aHwmcaDataType[j].pNext = NULL;
                 break;
         default :
                break;
         }  
       ----
       ----
    return(0)
    }

  10. #10
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par défaut
    Ah non, absolument pas!

    ucType doit être une constante de type définie par HWMCA (au même titre que HWMCA_TYPE_OCTETSTRING). ulLength devra être un sizeof du nombre (typiquement sizeof(int)), et pData pointer vers le nombre.
    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.

  11. #11
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Le problème c'est que dans la doc il est qui quand cas de type INTEGER

    ucType doit être du type HWMCA_TYPE_INTEGER
    ulLength doit être à 2
    PData doit pointer sur HWMCA_TRUE ou HWMCA_FALSE

    ucType
    Should be set to HWMCA_TYPE_INTEGER.
    ulLength
    Should be set to 2.
    pData A pointer to a field containing the value
    HWMCA_TRUE for priority operating system
    commands or HWMCA_FALSE for nonpriority
    operating system commands.

    un ucType HWMCA_TYPE_INTEGER correspond à la valeur 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #define HWMCA_TYPE_INTEGER      0x02
    Donc si j'envoie argv[5] valorisé à 2 je spécifie bien un type INTEGER que je test ensuite (?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    #DEFINE HWMCA_TRUE 1
    int main(int argc, char *argv[], char *envp[]) {
    ---
    int nbre =0;
    typedef struct HWMCA_DATATYPE_S HWMCA_DATATYPE_T;
    HWMCA_DATATYPE_T    aHwmcaDataType[10];
    aHwmcaDataType[j].ucType = (UCHAR)atoi(argv[5]);   /*type integer agv[5] =2*/     
       switch (aHwmcaDataType[j].ucType) {                    
         case HWMCA_TYPE_INTEGER:
                 Nbre = HWMCA_TRUE;
                 aHwmcaDataType[j].ulLength = 2;
                 aHwmcaDataType[j].pData    = &Nbre;
                 aHwmcaDataType[j].pNext = NULL;
                 break;
         default :
                break;
         }  
       ----
       ----
    return(0)
    Avec ce code j'ai bien
    un type INTEGER
    ulLength =2
    PData qui contient l'adresse de Nbre, est Nbre est égal à la valeur HWMCA_TRUE.
    je fais un printf() de sizeof(int) mais j'obtiens 4 (OS 64bits).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf("int  : %d\n",sizeof(int));
    Si je fais une erreur dans mon raisonnement, pourriez vous m'expliquer pourquoi et ou je me trompe ?
    Merci

  12. #12
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par défaut
    Déclare Nbre de type short (ou INT16).
    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.

  13. #13
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Effectivement un short int me donne 2
    Donc le bout de code parait il correct pour valoriser ma structure ?
    (dans le cas d'un type INTEGER) sachant que la doc donne:
    ucType
    Should be set to HWMCA_TYPE_INTEGER.
    ulLength
    Should be set to 2.
    pData A pointer to a field containing the value
    HWMCA_TRUE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #DEFINE HWMCA_TRUE 1
    int main(int argc, char *argv[], char *envp[]) {
    ---
    short int nbre =0;
    typedef struct HWMCA_DATATYPE_S HWMCA_DATATYPE_T;
    HWMCA_DATATYPE_T    aHwmcaDataType[10];
    ---
    ----
    aHwmcaDataType[j].ucType = (UCHAR)atoi(argv[5]);   /*type integer agv[5] =2*/     
       switch (aHwmcaDataType[j].ucType) {                    
         case HWMCA_TYPE_INTEGER:
                 Nbre = HWMCA_TRUE;
                 aHwmcaDataType[j].ulLength = sizeof(short int);;
                 aHwmcaDataType[j].pData    = &Nbre;
                 aHwmcaDataType[j].pNext = NULL;
                 break;
         default :
                break;
         }  
       ----
       ----
    return(0)
    la structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    struct HWMCA_DATATYPE_S {         
       UCHAR                 ucType;                              
       ULONG                 ulLength;
       PVOID                 pData;   
       struct HWMCA_DATATYPE_S *pNext;
    };

  14. #14
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par défaut
    Je pense que oui.
    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.

  15. #15
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Un grand merci à tous pour l'ensemble de vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. invalid static_cast from type `void
    Par barbarello dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 04/01/2006, 12h04
  2. Type void
    Par rod59 dans le forum C
    Réponses: 5
    Dernier message: 19/11/2005, 16h01
  3. [LG]Liste de pointeurs de type pointer
    Par tom_snop dans le forum Langage
    Réponses: 4
    Dernier message: 29/03/2005, 23h40
  4. Type void * ... petite question !
    Par Franck.H dans le forum C
    Réponses: 29
    Dernier message: 28/03/2005, 13h38
  5. type void* dans une structure
    Par barbapapaz dans le forum C
    Réponses: 3
    Dernier message: 16/07/2004, 16h11

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