Structure

Résolu
lektrosonic Messages postés 145 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 21 février 2013 - 26 nov. 2007 à 23:24
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 27 nov. 2007 à 19:20
Bojour,j'ai cree cette structure:

typedef struct element element;
struct element
{

    SOCKET socket;
    unsigned int con_type;
    int index;
    BOOL connected;
    char ip[16];
    BOOL p_protected;
    char* u_name;
    char* u_password;
   

};

tout va bien, mais si je declare une variable du type "element", ca plante :(

element test;

erreurs au compilateur (sous Visual studio):

error C2275: 'element' : illegal use of this type as an expression
error C2146: syntax error : missing ';' before identifier 'test'
error C2065: 'test' : undeclared identifier

Merci d'avance

l3KTr0 Was HeRe

8 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
27 nov. 2007 à 18:40
C'est sur que ça fonctionne, le problème ne vien pas de là.
Le problème est, d'après ce que je peux en déduire, qu'il doit déclarer une variable comme ceci:

printf("Bonjour");
int Variable;

mais compiler en C.

C++ (@++)<!--
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
26 nov. 2007 à 23:55
Tu déclares cette variable où dans ton code ? La seule façon que j'ai d'obtenir cette erreur c'est de déclarer une variable en plein milieu d'une fonction en compilent en C.

C++ (@++)<!--
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
27 nov. 2007 à 01:30
Ca n'arangera pas ton pb mais c plus facile a lire quand on declare ses strucs comme ca:

typedef struct _element
{
SOCKET socket;
unsigned int con_type;
int index;
BOOL connected;
char ip[16];
BOOL p_protected;
char* u_name;
char* u_password;
}ELEMENT *LPELEMENT;

Neo_Fr
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
27 nov. 2007 à 01:33
Ooups j'ai oublier une virgule:

typedef struct _element
{
SOCKET socket;
unsigned int con_type;
int index;
BOOL connected;
char ip[16];
BOOL p_protected;
char* u_name;
char* u_password;
}ELEMENT, *LPELEMENT;

Neo_Fr
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
27 nov. 2007 à 13:22
Si t'es en C++ pas besoin de t'embêter :

struct element
{
    SOCKET socket;
    unsigned int con_type;
    int index;
    BOOL connected;
    char ip[16];
    BOOL p_protected;
    char* u_name;
    char* u_password;
};
 
et pas de typedef.
0
titof3812 Messages postés 18 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
27 nov. 2007 à 18:37
Salut

J'ai teste le bout de code suivant qui semble tourner;
essaie avec un typedef de meme type

tyedef struct _machin
{
tes declaration
}machin;


CA donne ca
----------------------------------

typedef struct _element
{
unsigned int con_type;
int index;
int connected;
char ip[16];
int p_protected;
char* u_name;
char* u_password;
}element;


int
main ( int argc,char* argv [])
{
element test;
test.index=5;
}
--------------------

a++
0
titof3812 Messages postés 18 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
27 nov. 2007 à 19:17
Le typedef defini un nouveau type associant le nom element au type de la structure voulue donc doit etre global

Les declaration de variable de type element peuvent se faire n'importe ou .

le code ci dessous a ete compile avec un gcc et ne pose pas de pb ni a la compile ni al'execution .

Si le projet a plusieur fichier il doit falloir placer le typedef dans un fichier .h qui pourrat etre inclus dans les fichier l'utilisant.



----------------------------------------

#include <stdio.h>
typedef struct
{
int socket;
unsigned int con_type;
int index;
int connected;
char ip[16];
int p_protected;
char* u_name;
char* u_password;
} element;


int
main ( int argc,char* argv [])
{
printf ("Bonjours main \n");
element test;
test.index=5;
myfunc();
printf (" index; %i\n",test.index);
}


int myfunc()
{
printf ("Bonjours myfunc\n");
element test;
test.index=6;
printf (" index; %i\n",test.index);
}

---------------------------------------
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
27 nov. 2007 à 19:20
Nope.
Les compilateur C non C99 (comme l'est le compilateur de VC++) ne permet pas de déclarer une variable n'importe où mais seulement au début de la fonction.

C++ (@++)<!--
0
Rejoignez-nous