Allocation de mémoire avec la fonction calloc

Résolu
tntk Messages postés 5 Date d'inscription lundi 2 août 2010 Statut Membre Dernière intervention 16 janvier 2011 - 13 janv. 2011 à 23:29
tntk Messages postés 5 Date d'inscription lundi 2 août 2010 Statut Membre Dernière intervention 16 janvier 2011 - 14 janv. 2011 à 20:49
Salut à tous,
Voila, je suis en train d’upgrader une dll crée sous Labwindows/CVI avec Visual C++ V6.0, le code ci-dessous retourne deux erreurs sous VC++.
/* Déclaration des STRUCTURES */
/**********************************************************************/
typedef struct Struc_Colonne
{
char *Colonne;
char *Champ;
}Struc_Colonne;

typedef struct Struc_Ligne
{
long nbColonne;
Struc_Colonne *Colonne;
}Struc_Ligne;

typedef struct Struc_TableauDeDonnee
{
long nbLigne;
Struc_Ligne *Ligne;
}Struc_TableauDeDonnee;

Struc_TableauDeDonnee DataReturn;

DataReturn.Ligne = (struct*) calloc (lNbLigne,sizeof(Struc_Ligne));

DataReturn.Ligne[i].Colonne = (struct*) calloc(lNbColonne,sizeof(Struc_Colonne));



Erreur 1: cannot convert from 'struct PostgreSQL_Query::$S1 *' to 'struct Struc_Ligne *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Erreur 2: cannot convert from 'struct PostgreSQL_Query::$S2 *' to 'struct Struc_Colonne *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast



Avez-vous une solution ?

Merci à toutes et à tous.

5 réponses

cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
14 janv. 2011 à 15:52
re,


rien n'est pas un type contrairement à Struc_Ligne et Struc_Colonne.

DataReturn.Ligne = (struct Struc_Ligne*) calloc (lNbLigne,sizeof(Struc_Ligne));


@++
3
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
14 janv. 2011 à 00:01
salut,


struct n'est pas un type contrairement à Struc_Ligne et Struc_Colonne.


@++
0
tntk Messages postés 5 Date d'inscription lundi 2 août 2010 Statut Membre Dernière intervention 16 janvier 2011
14 janv. 2011 à 00:33
Salut,

Merci pour votre réponse
si j'enlève le struct le code sera alors:
DataReturn.Ligne = calloc (lNbLigne,sizeof(Struc_Ligne));

DataReturn.Ligne[i].Colonne =  calloc(lNbColonne,sizeof(Struc_Colonne));


d'où les erreurs:
error C2440: '=' : cannot convert from 'void *' to 'struct Struc_Ligne *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast

error C2440: '=' : cannot convert from 'void *' to 'struct Struc_Colonne *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast

et pour infos le même code déjà utilisé avec une application sous labwindows (compilateur c) depuis 2 ans sans problème.

pourrez-vous me dire qu'est-ce que je dois modifier exactement ?


MERCI
0
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
14 janv. 2011 à 09:00
Bonjour,
Tout est dans le texte, il faut faire une cast avant calloc.


louis
0

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

Posez votre question
tntk Messages postés 5 Date d'inscription lundi 2 août 2010 Statut Membre Dernière intervention 16 janvier 2011
14 janv. 2011 à 20:49
Tu est super patatalo
MERCI bien pour votre réponse et aussi pour votre disponibilité
aussi MERCI pour louis14



Mon problème est résolu

Allez bonne soirée a tous.
0
Rejoignez-nous