| Est-ce que vous connaitriez un moyen de declarer une structure vide | sans declancher un warning de la part du compilateur?
C'est invalide en C, alors... Du moins, si je comprends bien ce que tu appelles « struct vide ».
Oui, je pense que tu comprends bien ce que j'appelle "struct vide" ;-)
struct A { /* vide */ };
Et effectivement
struct A { char _[0]; };
est invalide. Je decouvre que le 1er cas aussi est invalide, ce qui empeche de creer un nouveau type simple (utile en C en l'absence de specialisation?).
a+, ld.
Gabriel Dos Reis wrote:
Laurent Deniau <laurent.deniau@cern.ch> writes:
| Est-ce que vous connaitriez un moyen de declarer une structure vide
| sans declancher un warning de la part du compilateur?
C'est invalide en C, alors...
Du moins, si je comprends bien ce que tu appelles « struct vide ».
Oui, je pense que tu comprends bien ce que j'appelle "struct vide" ;-)
struct A { /* vide */ };
Et effectivement
struct A { char _[0]; };
est invalide. Je decouvre que le 1er cas aussi est invalide, ce qui
empeche de creer un nouveau type simple (utile en C en l'absence de
specialisation?).
| Est-ce que vous connaitriez un moyen de declarer une structure vide | sans declancher un warning de la part du compilateur?
C'est invalide en C, alors... Du moins, si je comprends bien ce que tu appelles « struct vide ».
Oui, je pense que tu comprends bien ce que j'appelle "struct vide" ;-)
struct A { /* vide */ };
Et effectivement
struct A { char _[0]; };
est invalide. Je decouvre que le 1er cas aussi est invalide, ce qui empeche de creer un nouveau type simple (utile en C en l'absence de specialisation?).
J'avais enleve les guirlandes, mais je peux les remettres si tu veux.
Joyeux Noel a toi-aussi.
Pareil, joyeux Noel 2007.
(desole, j'ai pas pu resister).
moi non plus.
a+, ld.
Gabriel Dos Reis
Laurent Deniau writes:
| Gabriel Dos Reis wrote: | > Laurent Deniau writes: | > | Est-ce que vous connaitriez un moyen de declarer une structure vide | > | sans declancher un warning de la part du compilateur? | > C'est invalide en C, alors... | > Du moins, si je comprends bien ce que tu appelles « struct vide ». | | Oui, je pense que tu comprends bien ce que j'appelle "struct vide" ;-) | | struct A { /* vide */ }; | | Et effectivement | | struct A { char _[0]; }; | | est invalide. Je decouvre que le 1er cas aussi est invalide, ce qui | empeche de creer un nouveau type simple (utile en C en l'absence de | specialisation?).
Les programmeurs C ont toujours quelque chose à mettre dans un struct ;-)
Franchement, je n'ai jamais compris cette restriction, mais j'ai appris que c'est une restriction dont certains sont fiers...
-- Gaby
Laurent Deniau <laurent.deniau@cern.ch> writes:
| Gabriel Dos Reis wrote:
| > Laurent Deniau <laurent.deniau@cern.ch> writes:
| > | Est-ce que vous connaitriez un moyen de declarer une structure vide
| > | sans declancher un warning de la part du compilateur?
| > C'est invalide en C, alors...
| > Du moins, si je comprends bien ce que tu appelles « struct vide ».
|
| Oui, je pense que tu comprends bien ce que j'appelle "struct vide" ;-)
|
| struct A { /* vide */ };
|
| Et effectivement
|
| struct A { char _[0]; };
|
| est invalide. Je decouvre que le 1er cas aussi est invalide, ce qui
| empeche de creer un nouveau type simple (utile en C en l'absence de
| specialisation?).
Les programmeurs C ont toujours quelque chose à mettre dans un struct ;-)
Franchement, je n'ai jamais compris cette restriction, mais j'ai
appris que c'est une restriction dont certains sont fiers...
| Gabriel Dos Reis wrote: | > Laurent Deniau writes: | > | Est-ce que vous connaitriez un moyen de declarer une structure vide | > | sans declancher un warning de la part du compilateur? | > C'est invalide en C, alors... | > Du moins, si je comprends bien ce que tu appelles « struct vide ». | | Oui, je pense que tu comprends bien ce que j'appelle "struct vide" ;-) | | struct A { /* vide */ }; | | Et effectivement | | struct A { char _[0]; }; | | est invalide. Je decouvre que le 1er cas aussi est invalide, ce qui | empeche de creer un nouveau type simple (utile en C en l'absence de | specialisation?).
Les programmeurs C ont toujours quelque chose à mettre dans un struct ;-)
Franchement, je n'ai jamais compris cette restriction, mais j'ai appris que c'est une restriction dont certains sont fiers...
-- Gaby
Nicolas Joseph
Bonjour,
En C99 il y a : struct incomplet { int n; int tab[]; };
Mais :
1. Je ne sais pas si le premier champs est optionnel 2. Ton framework est en C90 je crois
Bonjour,
En C99 il y a :
struct incomplet
{
int n;
int tab[];
};
Mais :
1. Je ne sais pas si le premier champs est optionnel
2. Ton framework est en C90 je crois
En C99 il y a : struct incomplet { int n; int tab[]; };
Mais :
1. Je ne sais pas si le premier champs est optionnel 2. Ton framework est en C90 je crois
Laurent Deniau
Bonjour,
En C99 il y a : struct incomplet { int n; int tab[]; };
Mais :
1. Je ne sais pas si le premier champs est optionnel
Il est effectivement necessaire et de plus flexible array tab doit etre le dernier champ de la structure (c99 6.7.2.1-16) ce qui n'est en fait jamais mon cas.
2. Ton framework est en C90 je crois
Non, le "nouveau" est en C99 (j'ai besoin de qques fonctionnalites specifiques a C99).
Mais j'ai finalement resolu le probleme autrement. Je me suis dis que ce probleme etait peut-etre du a un probleme de design (aucun objet ne devrait etre vide) et j'ai donc revu ce point.
merci,
a+, ld.
Bonjour,
En C99 il y a :
struct incomplet
{
int n;
int tab[];
};
Mais :
1. Je ne sais pas si le premier champs est optionnel
Il est effectivement necessaire et de plus flexible array tab doit etre
le dernier champ de la structure (c99 6.7.2.1-16) ce qui n'est en fait
jamais mon cas.
2. Ton framework est en C90 je crois
Non, le "nouveau" est en C99 (j'ai besoin de qques fonctionnalites
specifiques a C99).
Mais j'ai finalement resolu le probleme autrement. Je me suis dis que
ce probleme etait peut-etre du a un probleme de design (aucun objet ne
devrait etre vide) et j'ai donc revu ce point.
En C99 il y a : struct incomplet { int n; int tab[]; };
Mais :
1. Je ne sais pas si le premier champs est optionnel
Il est effectivement necessaire et de plus flexible array tab doit etre le dernier champ de la structure (c99 6.7.2.1-16) ce qui n'est en fait jamais mon cas.
2. Ton framework est en C90 je crois
Non, le "nouveau" est en C99 (j'ai besoin de qques fonctionnalites specifiques a C99).
Mais j'ai finalement resolu le probleme autrement. Je me suis dis que ce probleme etait peut-etre du a un probleme de design (aucun objet ne devrait etre vide) et j'ai donc revu ce point.
merci,
a+, ld.
Antoine Leca
Bonjour à tous (comme cela faisait longtemps...)
Laurent Deniau wrote:
Gabriel Dos Reis wrote:
Laurent Deniau writes:
Est-ce que vous connaitriez un moyen de declarer une structure vide sans declancher un warning de la part du compilateur?
Supprimer les warnings au niveau de la ligne de commandes? :-)))
C'est invalide en C, alors...
Yep.
Du moins, si je comprends bien ce que tu appelles « struct vide ».
void ?
Oui, je pense que tu comprends bien ce que j'appelle "struct vide" ;-)
struct A { /* vide */ };
Et effectivement
struct A { char _[0]; };
est invalide. Je decouvre que le 1er cas aussi est invalide, ce qui empeche de creer un nouveau type simple
Yep.
(utile en C en l'absence de specialisation?).
Euh, pour quoi faire? (OK, j'ai lu ta réponse du 13, pas besoin de répéter inutilement)
- tu ne peux pas créer d'objet de ce type (en C un objet doit avoir une taille non nulle)
- tu ne peux pas dériver de classe, cette notion est absente du C (il faut prendre un autre langage, par exemple Delphi ou Ada95 ou que sais-je)
- si tu veux créer un type pointeur vers structure compatible, union{unsigned char _;} est suffisant (d'après 6.2.5p26ss). void* est pas mal non plus. :-)
Sinon, utiliser une structure sans la définir doit pouvoir marcher dans certains cas. Par exemple
struct vide;
Et pas de définition de struct vide, elle se comportera alors d'une manière très similaire à une structure vide. Note: Avec les compilos Borland, il faut passer -w-stu pour désactiver un pénible avertissement inutile.
Antoine
Bonjour à tous (comme cela faisait longtemps...)
Laurent Deniau wrote:
Gabriel Dos Reis wrote:
Laurent Deniau <laurent.deniau@cern.ch> writes:
Est-ce que vous connaitriez un moyen de declarer une structure vide
sans declancher un warning de la part du compilateur?
Supprimer les warnings au niveau de la ligne de commandes? :-)))
C'est invalide en C, alors...
Yep.
Du moins, si je comprends bien ce que tu appelles « struct vide ».
void ?
Oui, je pense que tu comprends bien ce que j'appelle "struct vide" ;-)
struct A { /* vide */ };
Et effectivement
struct A { char _[0]; };
est invalide. Je decouvre que le 1er cas aussi est invalide, ce qui
empeche de creer un nouveau type simple
Yep.
(utile en C en l'absence de specialisation?).
Euh, pour quoi faire? (OK, j'ai lu ta réponse du 13, pas besoin de répéter
inutilement)
- tu ne peux pas créer d'objet de ce type (en C un objet doit avoir une
taille non nulle)
- tu ne peux pas dériver de classe, cette notion est absente du C (il faut
prendre un autre langage, par exemple Delphi ou Ada95 ou que sais-je)
- si tu veux créer un type pointeur vers structure compatible,
union{unsigned char _;} est suffisant (d'après 6.2.5p26ss).
void* est pas mal non plus. :-)
Sinon, utiliser une structure sans la définir doit pouvoir marcher dans
certains cas. Par exemple
struct vide;
Et pas de définition de struct vide, elle se comportera alors d'une manière
très similaire à une structure vide.
Note: Avec les compilos Borland, il faut passer -w-stu pour désactiver un
pénible avertissement inutile.
Est-ce que vous connaitriez un moyen de declarer une structure vide sans declancher un warning de la part du compilateur?
Supprimer les warnings au niveau de la ligne de commandes? :-)))
C'est invalide en C, alors...
Yep.
Du moins, si je comprends bien ce que tu appelles « struct vide ».
void ?
Oui, je pense que tu comprends bien ce que j'appelle "struct vide" ;-)
struct A { /* vide */ };
Et effectivement
struct A { char _[0]; };
est invalide. Je decouvre que le 1er cas aussi est invalide, ce qui empeche de creer un nouveau type simple
Yep.
(utile en C en l'absence de specialisation?).
Euh, pour quoi faire? (OK, j'ai lu ta réponse du 13, pas besoin de répéter inutilement)
- tu ne peux pas créer d'objet de ce type (en C un objet doit avoir une taille non nulle)
- tu ne peux pas dériver de classe, cette notion est absente du C (il faut prendre un autre langage, par exemple Delphi ou Ada95 ou que sais-je)
- si tu veux créer un type pointeur vers structure compatible, union{unsigned char _;} est suffisant (d'après 6.2.5p26ss). void* est pas mal non plus. :-)
Sinon, utiliser une structure sans la définir doit pouvoir marcher dans certains cas. Par exemple
struct vide;
Et pas de définition de struct vide, elle se comportera alors d'une manière très similaire à une structure vide. Note: Avec les compilos Borland, il faut passer -w-stu pour désactiver un pénible avertissement inutile.