Pages: [1]   Go Down
Author Topic: Question pointeurs  (Read 334 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Une question sur les pointeurs (manque de connaissance probable en C   smiley-sad-blue)
J'ai une fonction qui récupère des données sur une carte SD pour me remplir des tableaux de différents types.
Je passe donc l'adresse du tableau en paramètre de ma fonction. Jusque là pas de soucis ça marche bien.
Par contre comme je dois préciser le type de pointeur je dois avoir une fonction par type dont la seule différence est le type de pointeur.
Y a t-il une méthode qui me permette de faire un pointeur "générique" pour éviter ça:

Code:
      resultat_SD = resultat_SD + lecture_SD_BOOL(Fichier_config,25,25,&G_Config_gene.obligation[0][0]);
      resultat_SD = resultat_SD + lecture_SD_INT(Fichier_config,50,5,&G_Config_gene.gammme_lem[0]); 
      resultat_SD = resultat_SD + lecture_SD_FLOAT(Fichier_config,55,5,&G_Config_gene.I_rack[0]);
      resultat_SD = resultat_SD + lecture_SD_BYTE(Fichier_config,60,1,&G_Config_gene.pourcentage_util);     

Merci
Logged

83 - var
Offline Offline
God Member
*****
Karma: 9
Posts: 864
ARDUINO Powa !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pas vraiment de solution, tu peut faire un pointeur de pointeur qui te ressort juste l'adresse de ta variable non générique mais ça commence à être tordu, pour le peut que ça te demande, tu devrais conservé ta solution non générique, ou alors, utilisé toujours un int, si c'est un bool sa sera 0 ou 1 pas de problème si c'est un char ça sera juste la valeur à caster après et pour un float tu te fait un petit algo pour passer les entiers dans les 16 premiers bits et la virgule dans les 16 dèrniers bits...

Seul solution que je vois ^^'

Skizo !
Logged

Un tien vaux mieux que deux tu l'auras !

France
Offline Offline
Faraday Member
**
Karma: 40
Posts: 3639
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu peux utiliser un pointeur de type void et ajouter un argument pour dire combien d'octet à transférer.
Mais le C++ te permet d'avoir plusieurs fonctions portant le même nom avec des arguments de type différents c'est le compilateur qui gère.
Exemple simple
Code:
float a=2.0,b=3.4;
int c=5,d=2;

void setup (void){
  Serial.begin(9600);
}

boolean superieur(int va, int vb){
  return(va>vb);
}

boolean superieur(float va, float vb){
  return(va>vb);
}

void loop(void){
  Serial.print(superieur(a,b));
  Serial.print(superieur(c,d));
}
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok Merci a tout les deux
Logged

Pages: [1]   Go Up
Jump to: