Structures en C

Fermé
Slibard Messages postés 18 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 20 août 2007 - 31 mai 2007 à 18:49
Slibard Messages postés 18 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 20 août 2007 - 13 juin 2007 à 16:46
Bonjour,

D'habitude je programme en Labview mais, la je dois me mettre au C pour voir si executer du C dans labview diminue le temps de calcul.

Je desire faire en C le produit de 2 tableaux mais les entrées et sorties de mon code C sont générées automatiquement par labview.

Le code créé automatiquement est le suivant:

/* CIN source file */
#include "extcode.h"
#include <math.h>

typedef struct {
int32 dimSize;
float32 elt[1];
} TD1;
typedef TD1 **TD1Hdl;

MgErr CINRun(TD1Hdl *X, TD1Hdl *Y, TD1Hdl *Z);
MgErr CINRun(TD1Hdl *X, TD1Hdl *Y, TD1Hdl *Z)
{

// Le produit des 2 tableaux Z = X*Y doit se faire ici

return noErr;
}


Je n'y connait rien en structures et j'ai du mal avec les pointeurs.
Si qqun dans la salle en sait un peu plus que moi...
Merci d'avance

1 réponse

ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
31 mai 2007 à 20:25
Bonjour,

Je ne suis pas sûre, mais je pense qu'il y a un problème.

typedef TD1 **TD1Hdl;

MgErr CINRun(TD1Hdl *X, TD1Hdl *Y, TD1Hdl *Z);


On ne sais pas sur combien de TD1* pointe *X !
0
Slibard Messages postés 18 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 20 août 2007
1 juin 2007 à 08:41
Ce n'est pas moi qui vais pouvoir t'aider mal'heureusement.
Je ne comprends deja pas ce que veut dire:
typedef TD1 **TD1Hdl;
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
1 juin 2007 à 09:38
Ca veut dire, a chaque fois que l'on écrit TD1Hdl, le compilateur remplacera par TD1**
TD1Hdl est donc un tableau 2D de TD1, mais de dimension inconnue ! Et impossible de savoir en C s'il l'on ne le stocke pas quelque part !
As-t-on le droit de modifier la structure ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
1 juin 2007 à 09:46
Salut
typedef permet de définir un synonyme.
Par exemple :
typedef int Valeur;
Valeur i;
Dans ton code, c'est pareil. On crée un synonyme de **TD1 en TD1Hdl.
Ainsi cela t'allègera la syntaxe.

Bonne chance
0
Slibard Messages postés 18 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 20 août 2007 > ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014
1 juin 2007 à 10:45
Oui je pense qu'on peut modifier la structure. Mais ce que je trouve bizarre c'est que les tableaux entrée et en sortie sont des tableaux 1D. Donc je ne vois pas pourquoi le code généré a mi des tableaux 2D.

Mais si tu as une idée avec une structure differente je suis preneur! ;-)
0
Slibard Messages postés 18 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 20 août 2007 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
1 juin 2007 à 11:01
ouai mais je ne comprends pas trop. Pourquoi on ne peut pas mettre simplement un truc du genre:

int i;
taille_tab = sizeof(X);
for (i=0;i<taille_tab;i++){
Z[i] = X[i] * Y[i]};

Ca serait vachement plus leger non?
0