begin process at 2012 05 29 08:26:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

erreur : Invalid struct or union type


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

erreur : Invalid struct or union type

lundi 31 octobre 2011 à 14:47:24 | erreur : Invalid struct or union type

Nico_35136

Bonjour,

Voila , en ce moment je m’arrache les cheveux sur une allocation dynamique d'une structure en mémoire.

Voici mes variable et structure que j'ai declaré dans mon .h :

Code C/C++ :
typedef struct tLightActuatorData
{
	unsigned short usLuxTarget;
	unsigned short usSwitchOnLevel;
	unsigned char  ucControlerStartAt;
	unsigned char  ucSwitchOffDelay; 
	unsigned char  ucScene1;
	unsigned char  ucScene2;
	unsigned char  ucScene3;
	unsigned char  ucScene4;
	unsigned char  ucScene5;	

} LightActuatorData;

extern unsigned char  *far *Actuator_1_struct;


Dans mon main j’initialise Actuator_1_struct :

Code C/C++ :
	Actuator_1_struct = calloc ( 1 , sizeof(unsigned char) );


et j’appelle ma fonction :

Code C/C++ :
        if (Actuator_1_Settings.bit.bActuatorFunctionChanged == TRUE)
	{	
		Actuator_1_struct = realloc(Actuator_1_struct, sizeof(struct tLightActuatorData));
	}
	if ( Actuator_1_Settings.bit.bKindCommand == LIGHT_ONOFF)
	{
	        Actuator_1_struct[0].ucScene1 = aucSondeParam [ KNX_EO_PARM_9_ACTUATOR_1 ];
	}


Mais j'obtiens une erreur dans la dernière ligne qui est :

[Error(ccom)] invalid struct or union type



Quelqu’un pourrai m'aider ?

Merci
lundi 31 octobre 2011 à 15:09:27 | Re : erreur : Invalid struct or union type

LA_Tupac

Membre Club
Salut.
Code C/C++ :
Actuator_1_struct = calloc ( 1 , sizeof(unsigned char) );

ça ne suffit pas pour ta struct... elle doit faire
Code C/C++ :
sizeof(LightActuatorData)

non?
lundi 31 octobre 2011 à 15:14:28 | Re : erreur : Invalid struct or union type

Nico_35136

Non ça ne change rien.

Par contre je doute que le problème viens d'ici. En effet peut importe la taille au debut du programme puisque je fais un realloc à la taille souhaité par la suite.

J'ai faux ?
lundi 31 octobre 2011 à 18:01:55 | Re : erreur : Invalid struct or union type

LA_Tupac

Membre Club
Non c'est bien ça..
Du coup il manque un peut de code pour avoir une vue plus claire du soucis...
Et quand tu dis:

Mais j'obtiens une erreur dans la dernière ligne


Quelle ligne exactement?
Code C/C++ :
        if (Actuator_1_Settings.bit.bActuatorFunctionChanged == TRUE)//ici?
	{	
		Actuator_1_struct = realloc(Actuator_1_struct, sizeof(struct tLightActuatorData));//ici?
	}
	if ( Actuator_1_Settings.bit.bKindCommand == LIGHT_ONOFF)//ici?
	{
	        Actuator_1_struct[0].ucScene1 = aucSondeParam [ KNX_EO_PARM_9_ACTUATOR_1 ];//ici?
	}
lundi 31 octobre 2011 à 21:01:27 | Re : erreur : Invalid struct or union type

Nico_35136

dans celle la :

Code C/C++ :
 Actuator_1_struct[0].ucScene1 = aucSondeParam [ KNX_EO_PARM_9_ACTUATOR_1 ];
mardi 1 novembre 2011 à 18:53:41 | Re : erreur : Invalid struct or union type

LA_Tupac

Membre Club
Bon il faut que tu cast ton unigned char avant de l'utiliser.

LightActuatorData* StructArray = (LightActuatorData*)Actuator_1_struct;
StructArray[0].ucScene1 = aucSondeParam[KNX_EO_PARM_9_ACTUATOR_1];


Et ça devrait marcher
mardi 1 novembre 2011 à 18:54:21 | Re : erreur : Invalid struct or union type

LA_Tupac

Membre Club
Réponse acceptée !
erf trompé de balise désolé
Code C/C++ :
LightActuatorData* StructArray = (LightActuatorData*)Actuator_1_struct;
StructArray[0].ucScene1 = aucSondeParam[KNX_EO_PARM_9_ACTUATOR_1];
mardi 1 novembre 2011 à 20:44:23 | Re : erreur : Invalid struct or union type

Nico_35136

Merci ne t'inquiète pas pour les balise j'avais très bien compris je testerais le code demain.
mercredi 2 novembre 2011 à 09:22:52 | Re : erreur : Invalid struct or union type

Nico_35136

Alléluia,ça fonctionne merci pour tous !


Cette discussion est classée dans : code, char, unsigned, struct, actuator


Répondre à ce message

Sujets en rapport avec ce message

struct [ par ready4 ] Je ne sais pas comment initialiser mes moteurs //intialisation moteursM1 = {2, 1, 1, 2, 0, 0, 120};M2 = {8, 4, 4, 8, 0, 0, 80};M3 = {32, 16, 16, 32, 0 Question idiote a propos des tableaux 3D [ par boulfrite ] Salut...J'ai une question un peu idiote : Est-ce que unsigned char image [256][256][3];est la meme chose que<table border= Structure alignment [ par Gargagol ] Voilà je programme sous MS VC++J'ai la structure suivante:typedef struct{ unsigned short port; unsigned char showMessage; unsigned char hashMonitor[16 envoi de paquet ip [ par sendouda ] Bonjour;j'ai écrit un programme qui permet d'envoyer des paquets ip à une destination.mais quand j'ai voulu le sniffer j'ai pas pu le capter.J'ai beso urgent:envoi paquet [ par sendouda ] Bonjour;j'ai écrit un programme qui permet d'envoyer des paquets ip à une destination.mais quand j'ai voulu le sniffer j'ai pas pu le capter.J'ai beso pointer sur unsigned char [ par avg ] Bonjour à tous je veut appeler une méthode qui n'est pas la mienne mais j'ai sa documentation qui contient titre de méthode et ses paramètres. Mon pro


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales