Zut, j'avais écrit un gros message qui a été perdu on dirait
Je le redis, utilise G_N_ELEMENTS. Il y a des problèmes dans ta déclaration de macro.
Zut, j'avais écrit un gros message qui a été perdu on dirait
Je le redis, utilise G_N_ELEMENTS. Il y a des problèmes dans ta déclaration de macro.
Pour la virgule après la dernière valeur du tableau, c'est intentionnel. Cela évite d'avoir à modifier l'avant dernière ligne pour rajouter une virgule quand on rajoute un nouvel élément. Cela diminue les différences entre 2 versions de fichiers, ce qui est très utile quand tu dois comparer différentes versions du même fichier. C'est aussi pour cette raison que toutes les valeurs sont chacunes sur une ligne.
Je l'ai utiisée => elle marche, mais pas toujours !
Avec un, ça ne marchait pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part char * nom_sphere[]
Avec un tableau de long généré avec un malloc, j'avais toujours 1![]()
Modérateur Mageia/Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels : xrandr, algorigramme et C, xml et gtk...
Cela fonctionne pour les tableaux alloués statiquement en C. Pas pour de l'allocation dynamique avec new ou malloc. Un tableau et un buffer alloué par malloc se manipulent de la même manière en C, mais ce n'est pas du tout la même chose. Tu ne peux pas faire un sizeof d'un tableau alloué via malloc en espérant avoir la taille du tableau, tu n'auras que la taille du pointeur qui pointe vers le buffer. Par exemple:
T'affichera (on compte le caractère nul final):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 char chaine = "toto"; printf ("%d", sizeof(chaine1));
En revanche,
T'affichera la taille du pointeur (4 octets en 32 bits, 8 en 64 bits):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 char *chaine = "toto"; printf ("%d", sizeof(chaine1));
Mais si tu dois faire de l'allocation dynamique, alors ne t'embête pas à gérer tout cela manuellement, utiliser les tableaux dynamiques de la GLib.
En revanche, ton autre exemple semble bizarre. Cela devrait fonctionner pour une définition de ce type:
G_N_ELEMENTS (nom_sphere) devrait renvoyer 3.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 char * nom_sphere[] = { "toto", "tata", "titi", };
La place de la virgule
Je préfère placer la virgule après les blancs et juste avant le nouveau mot, et donc aussi au début de la ligne et non à la fin.
Ceci résout automatiquement le problème de la virgule en trop et de plus favorise ma dernière manie: l'alignement vertical.
Un example:
Les commandes Emacs qui permettent d'agir sur un rectangle (C-x r k, C-x r t, etc) sont bien pratique pour manipuler ce code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 typedef enum { FFT_NORM_NONE = 0 ,FFT_NORM_SYMMETRIC ,FFT_NORM_FORWARD ,FFT_NORM_BACKWARD } FFT_norm; void gg_fourier_update (void) { if (fourier_win != NULL) { FFTParams p; if (fourier_params_get (&p) == RETURN_SUCCESS) { gg_set_int (but_inverse , p.invflag); gg_set_int (but_dumpDC , p.dcdump); gg_set_dble (but_padding , p.oversampling); gg_set_int (but_round2n , p.round2n); gg_set_int (but_filter , p.filter); gg_set_dble (but_padding , p.padding); gg_set_int (but_outsegmt , p.outsegmt); gg_set_int (but_out_fft , p.output); } } }
Modérateur Mageia/Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels : xrandr, algorigramme et C, xml et gtk...
Partager