Bonjour,
A partir de ça:
typedef uint8_t pixelRGBA_word[4];
typedef uint8_t pixelRGB_word[3];
typedef uint8_t pixelNG_word[1];
typedef pixelNG_word pixel_word;
je voulais avoir automatiquement le sizeof de ma donnée de type
pixel_word. Sur Google, j'ai dû mal chercher, je tombe uniquement sur
des trucs bateaux concernant les tableaux une fois passés à une
fonction.
Après avoir constaté qu'évidemment il me suffisait de créer un
pixel_word bidon là ou je voulais le sizeof, puis passé du bidon au
temporaire, j'ai de fil en aiguille trouvé ça à mettre dans le .h qui
fonctionne (gcc 3.4):
static const size_t MPI_MUL = sizeof(pixel_word){};
ou
#define MPI_MUL (sizeof(pixel_word){})
Est-ce la bonne pratique ?
Bonjour,
A partir de ça:
typedef uint8_t pixelRGBA_word[4];
typedef uint8_t pixelRGB_word[3];
typedef uint8_t pixelNG_word[1];
typedef pixelNG_word pixel_word;
je voulais avoir automatiquement le sizeof de ma donnée de type
pixel_word. Sur Google, j'ai dû mal chercher, je tombe uniquement sur
des trucs bateaux concernant les tableaux une fois passés à une
fonction.
Après avoir constaté qu'évidemment il me suffisait de créer un
pixel_word bidon là ou je voulais le sizeof, puis passé du bidon au
temporaire, j'ai de fil en aiguille trouvé ça à mettre dans le .h qui
fonctionne (gcc 3.4):
static const size_t MPI_MUL = sizeof(pixel_word){};
ou
#define MPI_MUL (sizeof(pixel_word){})
Est-ce la bonne pratique ?
Bonjour,
A partir de ça:
typedef uint8_t pixelRGBA_word[4];
typedef uint8_t pixelRGB_word[3];
typedef uint8_t pixelNG_word[1];
typedef pixelNG_word pixel_word;
je voulais avoir automatiquement le sizeof de ma donnée de type
pixel_word. Sur Google, j'ai dû mal chercher, je tombe uniquement sur
des trucs bateaux concernant les tableaux une fois passés à une
fonction.
Après avoir constaté qu'évidemment il me suffisait de créer un
pixel_word bidon là ou je voulais le sizeof, puis passé du bidon au
temporaire, j'ai de fil en aiguille trouvé ça à mettre dans le .h qui
fonctionne (gcc 3.4):
static const size_t MPI_MUL = sizeof(pixel_word){};
ou
#define MPI_MUL (sizeof(pixel_word){})
Est-ce la bonne pratique ?
Ben, pourquoi passer par un temporaire ?
Ben, pourquoi passer par un temporaire ?
Ben, pourquoi passer par un temporaire ?
Bonjour,
A partir de ça:
typedef uint8_t pixelRGBA_word[4];
typedef uint8_t pixelRGB_word[3];
typedef uint8_t pixelNG_word[1];
typedef pixelNG_word pixel_word;
Bonjour,
A partir de ça:
typedef uint8_t pixelRGBA_word[4];
typedef uint8_t pixelRGB_word[3];
typedef uint8_t pixelNG_word[1];
typedef pixelNG_word pixel_word;
Bonjour,
A partir de ça:
typedef uint8_t pixelRGBA_word[4];
typedef uint8_t pixelRGB_word[3];
typedef uint8_t pixelNG_word[1];
typedef pixelNG_word pixel_word;
On 8 juin, 08:29, Pierre Maurette wrote:Bonjour,
A partir de ça:
typedef uint8_t pixelRGBA_word[4];
typedef uint8_t pixelRGB_word[3];
typedef uint8_t pixelNG_word[1];
typedef pixelNG_word pixel_word;
Un commentaire en passant, je trouve que c'est une tres mauvaise
pratique de faire un typedef d'un tableau, meme de taille fixe. La
semantique de passage par valeur "naturelle" devient une semantique
par reference sans prevenir. De plus tu ne pourra pas retourner des
variables de ce type. Pourquoi ne pas mettre les tableaux dans des
structures?
On 8 juin, 08:29, Pierre Maurette <maurettepie...@wanadoo.fr> wrote:
Bonjour,
A partir de ça:
typedef uint8_t pixelRGBA_word[4];
typedef uint8_t pixelRGB_word[3];
typedef uint8_t pixelNG_word[1];
typedef pixelNG_word pixel_word;
Un commentaire en passant, je trouve que c'est une tres mauvaise
pratique de faire un typedef d'un tableau, meme de taille fixe. La
semantique de passage par valeur "naturelle" devient une semantique
par reference sans prevenir. De plus tu ne pourra pas retourner des
variables de ce type. Pourquoi ne pas mettre les tableaux dans des
structures?
On 8 juin, 08:29, Pierre Maurette wrote:Bonjour,
A partir de ça:
typedef uint8_t pixelRGBA_word[4];
typedef uint8_t pixelRGB_word[3];
typedef uint8_t pixelNG_word[1];
typedef pixelNG_word pixel_word;
Un commentaire en passant, je trouve que c'est une tres mauvaise
pratique de faire un typedef d'un tableau, meme de taille fixe. La
semantique de passage par valeur "naturelle" devient une semantique
par reference sans prevenir. De plus tu ne pourra pas retourner des
variables de ce type. Pourquoi ne pas mettre les tableaux dans des
structures?
On 8 juin, 08:29, Pierre Maurette wrote:Bonjour,
A partir de ça:
typedef uint8_t pixelRGBA_word[4];
typedef uint8_t pixelRGB_word[3];
typedef uint8_t pixelNG_word[1];
typedef pixelNG_word pixel_word;
Un commentaire en passant, je trouve que c'est une tres mauvaise
pratique de faire un typedef d'un tableau, meme de taille fixe. La
semantique de passage par valeur "naturelle" devient une semantique
par reference sans prevenir. De plus tu ne pourra pas retourner des
variables de ce type. Pourquoi ne pas mettre les tableaux dans des
structures?
On 8 juin, 08:29, Pierre Maurette <maurettepie...@wanadoo.fr> wrote:
Bonjour,
A partir de ça:
typedef uint8_t pixelRGBA_word[4];
typedef uint8_t pixelRGB_word[3];
typedef uint8_t pixelNG_word[1];
typedef pixelNG_word pixel_word;
Un commentaire en passant, je trouve que c'est une tres mauvaise
pratique de faire un typedef d'un tableau, meme de taille fixe. La
semantique de passage par valeur "naturelle" devient une semantique
par reference sans prevenir. De plus tu ne pourra pas retourner des
variables de ce type. Pourquoi ne pas mettre les tableaux dans des
structures?
On 8 juin, 08:29, Pierre Maurette wrote:Bonjour,
A partir de ça:
typedef uint8_t pixelRGBA_word[4];
typedef uint8_t pixelRGB_word[3];
typedef uint8_t pixelNG_word[1];
typedef pixelNG_word pixel_word;
Un commentaire en passant, je trouve que c'est une tres mauvaise
pratique de faire un typedef d'un tableau, meme de taille fixe. La
semantique de passage par valeur "naturelle" devient une semantique
par reference sans prevenir. De plus tu ne pourra pas retourner des
variables de ce type. Pourquoi ne pas mettre les tableaux dans des
structures?
Un commentaire sur le commentaire. Lorsque j'enseigne le C, je deconseille
toujours l'usage de typedef et l'usage de macros (*) aux debutants.
*: pour autre chose que de betes #define VALUE 42
En effet, d'experience, je ne les ai vu que faire des conneries avec ces
deux constructions. Ce sont des trucs vicieux qui ne sont guere utilisables
que par des bons.... Il y a meme des conneries dans C lui-meme, par exemple
(le top du top etant le FILE *, a mon avis, qui pue jusqu'au plafond et
au-dela).
Pour ma pomme, je n'utilise guere typedef que pour des equivalences entre
types numeriques. Jamais pour bidouiller sur des structures.
Les erreurs courantes de debutants sont de mettre des typedef sur des
struct ou des tableaux (oui, je n'aime pas). Entre:
typedef struct foo foo; // qui ne compile pas en C++
typedef struct foo *machin; // et hop, un pointeur tout ca.
typedef struct pouet pouet_t; // qui ne respecte pas la norme
on n'a que l'embarras du choix.
Sur les niveaux avances, c'est pas mieux: je ne compte plus les bibliotheques
qui ont des constructions bizantines de typedef... y compris dans leur API,
ce qui, bien evidemment, finit tres vite par poser des problemes de clash
de noms entre deux include de bibliotheques differentes qu'on voudrait
utiliser simultanement.
Il semblerait que le programmeur moyen ait beaucoup de mal a comprendre
a quel point un typedef est quelque chose de violent, puisque sa simple
presence suffit a rendre invalide tout le code C qui suit qui a le malheur
d'utiliser le nouveau nom de type pour n'importe quoi, y compris comme
nom de variable locale.
Un commentaire sur le commentaire. Lorsque j'enseigne le C, je deconseille
toujours l'usage de typedef et l'usage de macros (*) aux debutants.
*: pour autre chose que de betes #define VALUE 42
En effet, d'experience, je ne les ai vu que faire des conneries avec ces
deux constructions. Ce sont des trucs vicieux qui ne sont guere utilisables
que par des bons.... Il y a meme des conneries dans C lui-meme, par exemple
(le top du top etant le FILE *, a mon avis, qui pue jusqu'au plafond et
au-dela).
Pour ma pomme, je n'utilise guere typedef que pour des equivalences entre
types numeriques. Jamais pour bidouiller sur des structures.
Les erreurs courantes de debutants sont de mettre des typedef sur des
struct ou des tableaux (oui, je n'aime pas). Entre:
typedef struct foo foo; // qui ne compile pas en C++
typedef struct foo *machin; // et hop, un pointeur tout ca.
typedef struct pouet pouet_t; // qui ne respecte pas la norme
on n'a que l'embarras du choix.
Sur les niveaux avances, c'est pas mieux: je ne compte plus les bibliotheques
qui ont des constructions bizantines de typedef... y compris dans leur API,
ce qui, bien evidemment, finit tres vite par poser des problemes de clash
de noms entre deux include de bibliotheques differentes qu'on voudrait
utiliser simultanement.
Il semblerait que le programmeur moyen ait beaucoup de mal a comprendre
a quel point un typedef est quelque chose de violent, puisque sa simple
presence suffit a rendre invalide tout le code C qui suit qui a le malheur
d'utiliser le nouveau nom de type pour n'importe quoi, y compris comme
nom de variable locale.
Un commentaire sur le commentaire. Lorsque j'enseigne le C, je deconseille
toujours l'usage de typedef et l'usage de macros (*) aux debutants.
*: pour autre chose que de betes #define VALUE 42
En effet, d'experience, je ne les ai vu que faire des conneries avec ces
deux constructions. Ce sont des trucs vicieux qui ne sont guere utilisables
que par des bons.... Il y a meme des conneries dans C lui-meme, par exemple
(le top du top etant le FILE *, a mon avis, qui pue jusqu'au plafond et
au-dela).
Pour ma pomme, je n'utilise guere typedef que pour des equivalences entre
types numeriques. Jamais pour bidouiller sur des structures.
Les erreurs courantes de debutants sont de mettre des typedef sur des
struct ou des tableaux (oui, je n'aime pas). Entre:
typedef struct foo foo; // qui ne compile pas en C++
typedef struct foo *machin; // et hop, un pointeur tout ca.
typedef struct pouet pouet_t; // qui ne respecte pas la norme
on n'a que l'embarras du choix.
Sur les niveaux avances, c'est pas mieux: je ne compte plus les bibliotheques
qui ont des constructions bizantines de typedef... y compris dans leur API,
ce qui, bien evidemment, finit tres vite par poser des problemes de clash
de noms entre deux include de bibliotheques differentes qu'on voudrait
utiliser simultanement.
Il semblerait que le programmeur moyen ait beaucoup de mal a comprendre
a quel point un typedef est quelque chose de violent, puisque sa simple
presence suffit a rendre invalide tout le code C qui suit qui a le malheur
d'utiliser le nouveau nom de type pour n'importe quoi, y compris comme
nom de variable locale.
In article ,
Laurent Deniau wrote:On 8 juin, 08:29, Pierre Maurette wrote:Bonjour,
A partir de ça:
typedef uint8_t pixelRGBA_word[4];
typedef uint8_t pixelRGB_word[3];
typedef uint8_t pixelNG_word[1];
typedef pixelNG_word pixel_word;
Un commentaire en passant, je trouve que c'est une tres mauvaise
pratique de faire un typedef d'un tableau, meme de taille fixe. La
semantique de passage par valeur "naturelle" devient une semantique
par reference sans prevenir. De plus tu ne pourra pas retourner des
variables de ce type. Pourquoi ne pas mettre les tableaux dans des
structures?
Un commentaire sur le commentaire. Lorsque j'enseigne le C, je deconseille
toujours l'usage de typedef et l'usage de macros (*) aux debutants.
*: pour autre chose que de betes #define VALUE 42
En effet, d'experience, je ne les ai vu que faire des conneries avec ces
deux constructions. Ce sont des trucs vicieux qui ne sont guere utilisables
que par des bons.... Il y a meme des conneries dans C lui-meme, par exemple
(le top du top etant le FILE *, a mon avis, qui pue jusqu'au plafond et
au-dela).
Pour ma pomme, je n'utilise guere typedef que pour des equivalences entre
types numeriques. Jamais pour bidouiller sur des structures.
Les erreurs courantes de debutants sont de mettre des typedef sur des
struct ou des tableaux (oui, je n'aime pas). Entre:
typedef struct foo foo; // qui ne compile pas en C++
typedef struct foo *machin; // et hop, un pointeur tout ca.
typedef struct pouet pouet_t; // qui ne respecte pas la norme
on n'a que l'embarras du choix.
Sur les niveaux avances, c'est pas mieux: je ne compte plus les bibliotheques
qui ont des constructions bizantines de typedef... y compris dans leur API,
ce qui, bien evidemment, finit tres vite par poser des problemes de clash
de noms entre deux include de bibliotheques differentes qu'on voudrait
utiliser simultanement.
Il semblerait que le programmeur moyen ait beaucoup de mal a comprendre
a quel point un typedef est quelque chose de violent, puisque sa simple
presence suffit a rendre invalide tout le code C qui suit qui a le malheur
d'utiliser le nouveau nom de type pour n'importe quoi, y compris comme
nom de variable locale.
In article <1181303597.297419.164030@q66g2000hsg.googlegroups.com>,
Laurent Deniau <Laurent.Deniau@gmail.com> wrote:
On 8 juin, 08:29, Pierre Maurette <maurettepie...@wanadoo.fr> wrote:
Bonjour,
A partir de ça:
typedef uint8_t pixelRGBA_word[4];
typedef uint8_t pixelRGB_word[3];
typedef uint8_t pixelNG_word[1];
typedef pixelNG_word pixel_word;
Un commentaire en passant, je trouve que c'est une tres mauvaise
pratique de faire un typedef d'un tableau, meme de taille fixe. La
semantique de passage par valeur "naturelle" devient une semantique
par reference sans prevenir. De plus tu ne pourra pas retourner des
variables de ce type. Pourquoi ne pas mettre les tableaux dans des
structures?
Un commentaire sur le commentaire. Lorsque j'enseigne le C, je deconseille
toujours l'usage de typedef et l'usage de macros (*) aux debutants.
*: pour autre chose que de betes #define VALUE 42
En effet, d'experience, je ne les ai vu que faire des conneries avec ces
deux constructions. Ce sont des trucs vicieux qui ne sont guere utilisables
que par des bons.... Il y a meme des conneries dans C lui-meme, par exemple
(le top du top etant le FILE *, a mon avis, qui pue jusqu'au plafond et
au-dela).
Pour ma pomme, je n'utilise guere typedef que pour des equivalences entre
types numeriques. Jamais pour bidouiller sur des structures.
Les erreurs courantes de debutants sont de mettre des typedef sur des
struct ou des tableaux (oui, je n'aime pas). Entre:
typedef struct foo foo; // qui ne compile pas en C++
typedef struct foo *machin; // et hop, un pointeur tout ca.
typedef struct pouet pouet_t; // qui ne respecte pas la norme
on n'a que l'embarras du choix.
Sur les niveaux avances, c'est pas mieux: je ne compte plus les bibliotheques
qui ont des constructions bizantines de typedef... y compris dans leur API,
ce qui, bien evidemment, finit tres vite par poser des problemes de clash
de noms entre deux include de bibliotheques differentes qu'on voudrait
utiliser simultanement.
Il semblerait que le programmeur moyen ait beaucoup de mal a comprendre
a quel point un typedef est quelque chose de violent, puisque sa simple
presence suffit a rendre invalide tout le code C qui suit qui a le malheur
d'utiliser le nouveau nom de type pour n'importe quoi, y compris comme
nom de variable locale.
In article ,
Laurent Deniau wrote:On 8 juin, 08:29, Pierre Maurette wrote:Bonjour,
A partir de ça:
typedef uint8_t pixelRGBA_word[4];
typedef uint8_t pixelRGB_word[3];
typedef uint8_t pixelNG_word[1];
typedef pixelNG_word pixel_word;
Un commentaire en passant, je trouve que c'est une tres mauvaise
pratique de faire un typedef d'un tableau, meme de taille fixe. La
semantique de passage par valeur "naturelle" devient une semantique
par reference sans prevenir. De plus tu ne pourra pas retourner des
variables de ce type. Pourquoi ne pas mettre les tableaux dans des
structures?
Un commentaire sur le commentaire. Lorsque j'enseigne le C, je deconseille
toujours l'usage de typedef et l'usage de macros (*) aux debutants.
*: pour autre chose que de betes #define VALUE 42
En effet, d'experience, je ne les ai vu que faire des conneries avec ces
deux constructions. Ce sont des trucs vicieux qui ne sont guere utilisables
que par des bons.... Il y a meme des conneries dans C lui-meme, par exemple
(le top du top etant le FILE *, a mon avis, qui pue jusqu'au plafond et
au-dela).
Pour ma pomme, je n'utilise guere typedef que pour des equivalences entre
types numeriques. Jamais pour bidouiller sur des structures.
Les erreurs courantes de debutants sont de mettre des typedef sur des
struct ou des tableaux (oui, je n'aime pas). Entre:
typedef struct foo foo; // qui ne compile pas en C++
typedef struct foo *machin; // et hop, un pointeur tout ca.
typedef struct pouet pouet_t; // qui ne respecte pas la norme
on n'a que l'embarras du choix.
Sur les niveaux avances, c'est pas mieux: je ne compte plus les bibliotheques
qui ont des constructions bizantines de typedef... y compris dans leur API,
ce qui, bien evidemment, finit tres vite par poser des problemes de clash
de noms entre deux include de bibliotheques differentes qu'on voudrait
utiliser simultanement.
Il semblerait que le programmeur moyen ait beaucoup de mal a comprendre
a quel point un typedef est quelque chose de violent, puisque sa simple
presence suffit a rendre invalide tout le code C qui suit qui a le malheur
d'utiliser le nouveau nom de type pour n'importe quoi, y compris comme
nom de variable locale.
In article ,
Laurent Deniau wrote:On 8 juin, 08:29, Pierre Maurette wrote:
En bref, il y les débutants et les bons.
Et le "programmeur moyen", qui a beaucoup de mal à comprendre et
surtout à comprendre qu'il ne devrait chercher à comprendre et qu'il
serait préférable qu'il ne programmât point.
Et puis il y a, non pas Frida, mais l'Enseignant, plus que bon et
n'ayant jamais débuté, bien que souvent n'ayant jamais quitté l'école.
L'Enseignant cultive au moins le paradoxe...
L'Enseignant préfère s'adresser à ses semblables et aux bons - et
encore... - qu'aux mauvais, aux moyens, et aux ... débutants ;-)
J'aurais aimé quelque chose d'utile, genre règle de nommage pour les
types typedef-és malgré l'opposition de l'Enseignant. C'est pourtant
ici que j'avais appris que le suffixage par _t était *très* mal. Je
m'étais rabattu sur le prefixage Petrus_, mais ça ne convient pas
toujours. Et j'aimerais bien un truc qui indique que c'est un type.
In article <1181303597.297419.164030@q66g2000hsg.googlegroups.com>,
Laurent Deniau <Laurent.Deniau@gmail.com> wrote:
On 8 juin, 08:29, Pierre Maurette <maurettepie...@wanadoo.fr> wrote:
En bref, il y les débutants et les bons.
Et le "programmeur moyen", qui a beaucoup de mal à comprendre et
surtout à comprendre qu'il ne devrait chercher à comprendre et qu'il
serait préférable qu'il ne programmât point.
Et puis il y a, non pas Frida, mais l'Enseignant, plus que bon et
n'ayant jamais débuté, bien que souvent n'ayant jamais quitté l'école.
L'Enseignant cultive au moins le paradoxe...
L'Enseignant préfère s'adresser à ses semblables et aux bons - et
encore... - qu'aux mauvais, aux moyens, et aux ... débutants ;-)
J'aurais aimé quelque chose d'utile, genre règle de nommage pour les
types typedef-és malgré l'opposition de l'Enseignant. C'est pourtant
ici que j'avais appris que le suffixage par _t était *très* mal. Je
m'étais rabattu sur le prefixage Petrus_, mais ça ne convient pas
toujours. Et j'aimerais bien un truc qui indique que c'est un type.
In article ,
Laurent Deniau wrote:On 8 juin, 08:29, Pierre Maurette wrote:
En bref, il y les débutants et les bons.
Et le "programmeur moyen", qui a beaucoup de mal à comprendre et
surtout à comprendre qu'il ne devrait chercher à comprendre et qu'il
serait préférable qu'il ne programmât point.
Et puis il y a, non pas Frida, mais l'Enseignant, plus que bon et
n'ayant jamais débuté, bien que souvent n'ayant jamais quitté l'école.
L'Enseignant cultive au moins le paradoxe...
L'Enseignant préfère s'adresser à ses semblables et aux bons - et
encore... - qu'aux mauvais, aux moyens, et aux ... débutants ;-)
J'aurais aimé quelque chose d'utile, genre règle de nommage pour les
types typedef-és malgré l'opposition de l'Enseignant. C'est pourtant
ici que j'avais appris que le suffixage par _t était *très* mal. Je
m'étais rabattu sur le prefixage Petrus_, mais ça ne convient pas
toujours. Et j'aimerais bien un truc qui indique que c'est un type.
Un commentaire sur le commentaire. Lorsque j'enseigne le C, je deconseille
toujours l'usage de typedef et l'usage de macros (*) aux debutants.
*: pour autre chose que de betes #define VALUE 42
Même un typedef sur des structs ?
Bof. Que le C permette de faire des horreurs, ça ne me semble pas
une nouveauté. De là à interdire le struct...
Un commentaire sur le commentaire. Lorsque j'enseigne le C, je deconseille
toujours l'usage de typedef et l'usage de macros (*) aux debutants.
*: pour autre chose que de betes #define VALUE 42
Même un typedef sur des structs ?
Bof. Que le C permette de faire des horreurs, ça ne me semble pas
une nouveauté. De là à interdire le struct...
Un commentaire sur le commentaire. Lorsque j'enseigne le C, je deconseille
toujours l'usage de typedef et l'usage de macros (*) aux debutants.
*: pour autre chose que de betes #define VALUE 42
Même un typedef sur des structs ?
Bof. Que le C permette de faire des horreurs, ça ne me semble pas
une nouveauté. De là à interdire le struct...
En bref, il y les débutants et les bons.
Et le "programmeur moyen", qui a beaucoup de mal à comprendre et
surtout à comprendre qu'il ne devrait chercher à comprendre et qu'il
serait préférable qu'il ne programmât point.
Et puis il y a, non pas Frida, mais l'Enseignant, plus que bon et
n'ayant jamais débuté, bien que souvent n'ayant jamais quitté l'école.
L'Enseignant cultive au moins le paradoxe...
En bref, il y les débutants et les bons.
Et le "programmeur moyen", qui a beaucoup de mal à comprendre et
surtout à comprendre qu'il ne devrait chercher à comprendre et qu'il
serait préférable qu'il ne programmât point.
Et puis il y a, non pas Frida, mais l'Enseignant, plus que bon et
n'ayant jamais débuté, bien que souvent n'ayant jamais quitté l'école.
L'Enseignant cultive au moins le paradoxe...
En bref, il y les débutants et les bons.
Et le "programmeur moyen", qui a beaucoup de mal à comprendre et
surtout à comprendre qu'il ne devrait chercher à comprendre et qu'il
serait préférable qu'il ne programmât point.
Et puis il y a, non pas Frida, mais l'Enseignant, plus que bon et
n'ayant jamais débuté, bien que souvent n'ayant jamais quitté l'école.
L'Enseignant cultive au moins le paradoxe...