lektrosonic
Messages postés145Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention21 février 2013
-
26 nov. 2007 à 23:24
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 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
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 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:
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 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.
titof3812
Messages postés18Date d'inscriptionlundi 12 novembre 2007StatutMembreDernière intervention12 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);
}
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 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.