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 :

'struct' member redefinition


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Fooshi
    Homme Profil pro
    ICD
    Inscrit en
    Juin 2002
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ICD
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 508
    Par défaut 'struct' member redefinition
    Hello,
    j'ai une erreur a la compilation d'une extension php, un truc assez incomprehensible

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /// session_open result declaration.
    struct session_open_result
    {
    	net_sessid_t session_id;	///< The session_id choosen by the server, this session_id must be used for all subsequent calls to the server or they will fail.
    };
     
    /// session_reset result declaration.
    struct session_reset_result
    {
    	net_sessid_t session_id;	///< The new session_id choosen by the server.
    };
    voici l'erreur :
    error C2020: 'session_id' : 'struct' member redefinition
    comme ci j'avais definie session_id dans la meme structure ce qui n'est pas le cas.
    je vous donne mon code entier on sais jamais :



    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    #ifndef FREEAGE_PHP_MOD_0_INCLUDED
    #define FREEAGE_PHP_MOD_0_INCLUDED
     
    #ifdef __cplusplus
    extern "C" {
    #endif
     
    #define FREEAGE_PHP_MOD_0_EXTNAME	"mod_0"
    #define FREEAGE_PHP_MOD_0_EXTVER	NULL
     
    #include "php.h"
     
    #ifdef ZTS
    #include "TSRM.h"
    #endif
     
    #include "net_types.h"
     
    PHP_MINIT_FUNCTION(mod_0);
    PHP_MINFO_FUNCTION(mod_0);
    PHP_MSHUTDOWN_FUNCTION(mod_0);
     
    /* mod_0 functions	*/
    PHP_FUNCTION(session_open);
    PHP_FUNCTION(session_open_result);
    PHP_FUNCTION(session_open_result_fetch_array);
    PHP_FUNCTION(session_reset);
    PHP_FUNCTION(session_reset_result);
    PHP_FUNCTION(session_reset_result_fetch_array);
    PHP_FUNCTION(session_close);
    PHP_FUNCTION(crypto_set_rsa_key);
    PHP_FUNCTION(crypto_get_aes_params);
    PHP_FUNCTION(crypto_get_aes_params_result);
    PHP_FUNCTION(crypto_get_aes_params_result_fetch_array);
    PHP_FUNCTION(crypto_begin);
    PHP_FUNCTION(crypto_begin_result);
    PHP_FUNCTION(crypto_begin_result_fetch_array);
    PHP_FUNCTION(crypto_end);
     
    ZEND_BEGIN_MODULE_GLOBALS(mod_0)
     
    /// session_open result declaration.
    struct session_open_result
    {
    	net_sessid_t session_id;	///< The session_id choosen by the server, this session_id must be used for all subsequent calls to the server or they will fail.
    };
     
    /// session_reset result declaration.
    struct session_reset_result
    {
    	net_sessid_t session_id;	///< The new session_id choosen by the server.
    };
     
    /// crypto_set_rsa_key params declaration.
    struct crypto_set_rsa_key_params
    {
    	net_ubyte_t public_key [128];	///< The client public RSA key.
    };
     
    /// crypto_get_aes_params result declaration.
    struct crypto_get_aes_params_result
    {
    	net_bool_t error;	///< False if ok, or true if an error occurred.
    	net_ubyte_t aes_params [128];	///< 1024 random bits needed to compute the AES parameters, encrypted with the client public key.
    };
     
    /// crypto_begin result declaration.
    struct crypto_begin_result
    {
    	net_bool_t error;	///< False if ok, or true if an error occurred.
    };
     
    ZEND_END_MODULE_GLOBALS(mod_0)
     
    /* Registration mod_0 inputs.	*/
    extern zend_module_entry mod_0_module_entry;
    #define phpext_mod_0_ptr &mod_0_module_entry
     
    #ifdef ZTS
    #define MOD_0_G(v) TSRMG(mod_0_globals_id, zend_mod_0_globals *, v)
    extern int mod_0_globals_id;
    #else
    #define MOD_0_G(v) (mod_0_globals.v)
    extern zend_mod_0_globals mod_0_globals;
    #endif
     
    #ifdef PHP_WIN32
    #define MOD_0_API __declspec(dllexport)
    #else
    #define MOD_0_API
    #endif
     
    ZEND_EXTERN_MODULE_GLOBALS(mod_0)
     
    #ifdef __cplusplus
    }
    #endif
     
    #endif /* FREEAGE_PHP_MOD_0_INCLUDED */
    je ne vois vraiment pas le probleme

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Je ne saurais pas trop te dire. Mais qu'est-ce que net_sessid_t ? Lorsque tu déclares un objet de type structure, il faut clairement indiquer struct, à moins que tu le crées comme un nouveau type (typedef).

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct machin
    {
      int membre;
    };
     
    machin monobjet; /*ERREUR ! Le compilateur connait "struct machin" mais pas le type "machin". */
    ne pourra pas compiler. Le compilateur ne connait pas machin mais seulement struct machin.

    Mais si on écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct machin
    {
      int membre;
    } machin;
     
    machin monobjet; /* OK ! Le compilateur connait le type "machin" */
    là, ça compilera.

    Peut-être que ton compilateur ne connait pas net_sessid_t mais seulement struct net_sessid_t ?

  3. #3
    Membre éclairé Avatar de Fooshi
    Homme Profil pro
    ICD
    Inscrit en
    Juin 2002
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ICD
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 508
    Par défaut
    je comprendrais mon erreur si net_sessid_id etais un typedef d'une structure mais ici ce n'est pas le cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    typedef unsigned __int32 uint32_t;
    typedef uint32_t net_sessid_t;
    comme tu peux le voir c'est juste un entier non signé.

    je viens d'essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /// session_open result declaration.
    typedef struct session_open_result
    {
    	net_sessid_t session_id;	///< The session_id choosen by the server, this session_id must be used for all subsequent calls to the server or they will fail.
    }
    session_open_result;
     
    /// session_reset result declaration.
    typedef struct session_reset_result
    {
    	net_sessid_t session_id;	///< The new session_id choosen by the server.
    }
    session_reset_result;
    mais ce ne resous pas mon probleme. Lorsque je fais ca, ca me me met : "illegal storage class"

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour
    Ce serait pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #ifndef ZTS  // au lieu de ifdef ZTS
    #include "TSRM.h"
    #endif
    ?

  5. #5
    Membre éclairé Avatar de Fooshi
    Homme Profil pro
    ICD
    Inscrit en
    Juin 2002
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ICD
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 508
    Par défaut
    @pierre dolez : non ca c'est bon :-)

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Difficile à dire avec aussi peu de code.

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

Discussions similaires

  1. struct type redefinition avec VS 2005
    Par kass28 dans le forum Visual C++
    Réponses: 17
    Dernier message: 14/08/2007, 17h48
  2. struct ?
    Par bart64 dans le forum C
    Réponses: 5
    Dernier message: 10/11/2003, 23h08
  3. qsort avec un struct* ?
    Par hpfx dans le forum MFC
    Réponses: 11
    Dernier message: 06/10/2003, 18h29
  4. Unrecognized option -fnative-struct
    Par copyallright dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 01/05/2003, 12h25
  5. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25

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