Structures en C

Slibard Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
Slibard Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   342
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   342
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention   > ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   > fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention  
 
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