J'ai encore le mot clé "struct" nécessaire dans la définition, mais plus
par la suite donc ce n'est pas trop gênant... y aurait il cependant
possibilité de l'éviter cette première fois?
Maintenant je souhaiterais déclarer cette structure _sans_ la définire
(j'ai plusieurs fichiers d'include, et je ne souhaite les inclure que
lorsque c'est strictement nécessaire, cad pas pour intanciations de pointeur);
Je peux faire un
struct MaStructure;
struct MaStructure *ms_ptr;
mais j'aimerais arriver à un :
MaStructure *ms_ptr;
Existe-t-il une déclaration permetant de le faire?
J'ai encore le mot clé "struct" nécessaire dans la définition, mais plus par la suite donc ce n'est pas trop gênant... y aurait il cependant possibilité de l'éviter cette première fois?
Pas à ma connaissance.
Je peux faire un struct MaStructure; typedef struct MaStructure MaStructure;
MaStructure *ms_ptr;
Marc Boyer -- La contractualisation de la recherche, c'est me donner de l'argent pour faire ce que je ne sais pas faire, que je fais donc mal, pendant que ce que je sais faire, je le fais sans moyens...
Antoine Calando wrote:
Je voudrais cependant ne pas avoir à utiliser le mot clé "struct" à
chaque intanciation, j'utilise pour cela un typedef :
J'ai encore le mot clé "struct" nécessaire dans la définition, mais plus
par la suite donc ce n'est pas trop gênant... y aurait il cependant
possibilité de l'éviter cette première fois?
Pas à ma connaissance.
Je peux faire un
struct MaStructure;
typedef struct MaStructure MaStructure;
MaStructure *ms_ptr;
Marc Boyer
--
La contractualisation de la recherche, c'est me donner de l'argent pour
faire ce que je ne sais pas faire, que je fais donc mal, pendant que ce
que je sais faire, je le fais sans moyens...
J'ai encore le mot clé "struct" nécessaire dans la définition, mais plus par la suite donc ce n'est pas trop gênant... y aurait il cependant possibilité de l'éviter cette première fois?
Pas à ma connaissance.
Je peux faire un struct MaStructure; typedef struct MaStructure MaStructure;
MaStructure *ms_ptr;
Marc Boyer -- La contractualisation de la recherche, c'est me donner de l'argent pour faire ce que je ne sais pas faire, que je fais donc mal, pendant que ce que je sais faire, je le fais sans moyens...
Antoine Leca
En , Antoine Calando va escriure:
J'ai une structure contenant un pointeur sur le même type de structure Je voudrais cependant ne pas avoir à utiliser le mot clé "struct" à chaque intanciation, j'utilise pour cela un typedef :
J'ai encore le mot clé "struct" nécessaire dans la définition, mais plus par la suite donc ce n'est pas trop gênant... y aurait il cependant possibilité de l'éviter cette première fois?
typedef struct MaStructure MaStructure;
struct MaStructure { int titi; MaStructure * next; } ;
MaStructure ms;
Je ne sais pas ce que cela t'apportes (il faut dire que je garde systématiquement struct, c'est en fait une question de style). Mais cela répond à ta question, non ?
Maintenant, si tu veux supprimer l'un des deux struct, je pense qu'il te faut te pencher sur C++...
Maintenant je souhaiterais déclarer cette structure _sans_ la définire
Aucun souci (sauf celui d'utiliser des compilateurs qui s'en plaignent): tu peux placer la première de mes lignes dans un fichier d'entête, tant le compilateur n'a pas besoin de connaître la taille de la structure ou sa composition (en gros, tant que tu manipules les structures comme des objets opaques, à travers des pointeurs), tu peux créer des pointeurs vers MaStructure, les passer en arguments, leur assigner des résultats de fonction, etc.
Antoine
Antoine
En opr7msocznks9ef2@news.wanadoo.fr, Antoine Calando va escriure:
J'ai une structure contenant un pointeur sur le même type de structure
Je voudrais cependant ne pas avoir à utiliser le mot clé "struct" à
chaque intanciation, j'utilise pour cela un typedef :
J'ai encore le mot clé "struct" nécessaire dans la définition, mais
plus par la suite donc ce n'est pas trop gênant... y aurait il
cependant possibilité de l'éviter cette première fois?
typedef struct MaStructure MaStructure;
struct MaStructure {
int titi;
MaStructure * next;
} ;
MaStructure ms;
Je ne sais pas ce que cela t'apportes (il faut dire que je garde
systématiquement struct, c'est en fait une question de style). Mais cela
répond à ta question, non ?
Maintenant, si tu veux supprimer l'un des deux struct, je pense qu'il te
faut te pencher sur C++...
Maintenant je souhaiterais déclarer cette structure _sans_ la définire
Aucun souci (sauf celui d'utiliser des compilateurs qui s'en plaignent): tu
peux placer la première de mes lignes dans un fichier d'entête, tant le
compilateur n'a pas besoin de connaître la taille de la structure ou sa
composition (en gros, tant que tu manipules les structures comme des objets
opaques, à travers des pointeurs), tu peux créer des pointeurs vers
MaStructure, les passer en arguments, leur assigner des résultats de
fonction, etc.
J'ai une structure contenant un pointeur sur le même type de structure Je voudrais cependant ne pas avoir à utiliser le mot clé "struct" à chaque intanciation, j'utilise pour cela un typedef :
J'ai encore le mot clé "struct" nécessaire dans la définition, mais plus par la suite donc ce n'est pas trop gênant... y aurait il cependant possibilité de l'éviter cette première fois?
typedef struct MaStructure MaStructure;
struct MaStructure { int titi; MaStructure * next; } ;
MaStructure ms;
Je ne sais pas ce que cela t'apportes (il faut dire que je garde systématiquement struct, c'est en fait une question de style). Mais cela répond à ta question, non ?
Maintenant, si tu veux supprimer l'un des deux struct, je pense qu'il te faut te pencher sur C++...
Maintenant je souhaiterais déclarer cette structure _sans_ la définire
Aucun souci (sauf celui d'utiliser des compilateurs qui s'en plaignent): tu peux placer la première de mes lignes dans un fichier d'entête, tant le compilateur n'a pas besoin de connaître la taille de la structure ou sa composition (en gros, tant que tu manipules les structures comme des objets opaques, à travers des pointeurs), tu peux créer des pointeurs vers MaStructure, les passer en arguments, leur assigner des résultats de fonction, etc.
Antoine
Antoine
Antoine Calando
On 7 May 2004 13:35:36 GMT, Marc Boyer wrote:
Je peux faire un struct MaStructure;
typedef struct MaStructure MaStructure;
Le problème est qu'il y a une erreur à la compilation lorsqu'un fichier inclus l'entête avec déclaration et celui avec definition :
In file included from prog.c:20: inc_definition.h:91: redefinition of 'MaStrucutre' inc_declaration.h:75: `MaStrucutre' previously declared here
(avec gcc 3.2.3 / linux)
Antoine
On 7 May 2004 13:35:36 GMT, Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr.invalid> wrote:
Je peux faire un
struct MaStructure;
typedef struct MaStructure MaStructure;
Le problème est qu'il y a une erreur à la compilation lorsqu'un
fichier inclus l'entête avec déclaration et celui avec definition :
In file included from prog.c:20:
inc_definition.h:91: redefinition of 'MaStrucutre'
inc_declaration.h:75: `MaStrucutre' previously declared here
J'ai encore le mot clé "struct" nécessaire dans la définition, mais plus par la suite donc ce n'est pas trop gênant... y aurait il cependant possibilité de l'éviter cette première fois?
Je ne vois pas l'intérêt, mais bon:
typedef struct MaStructure MaStructure;
struct MaStructure { int titi; MaStructure * next; };
MaStructure ms;
Maintenant je souhaiterais déclarer cette structure _sans_ la définire (j'ai plusieurs fichiers d'include, et je ne souhaite les inclure que lorsque c'est strictement nécessaire, cad pas pour intanciations de pointeur);
Je peux faire un struct MaStructure; struct MaStructure *ms_ptr;
mais j'aimerais arriver à un :
MaStructure *ms_ptr;
typedef struct Mastructure Mastructure;
-- Horst
On Fri, 07 May 2004 15:20:26 +0200, Antoine Calando
<acalando.removethisword@free.fr> wrote:
Je voudrais cependant ne pas avoir à utiliser le mot clé "struct" à
chaque intanciation, j'utilise pour cela un typedef :
J'ai encore le mot clé "struct" nécessaire dans la définition, mais plus
par la suite donc ce n'est pas trop gênant... y aurait il cependant
possibilité de l'éviter cette première fois?
Je ne vois pas l'intérêt, mais bon:
typedef struct MaStructure MaStructure;
struct MaStructure {
int titi;
MaStructure * next;
};
MaStructure ms;
Maintenant je souhaiterais déclarer cette structure _sans_ la définire
(j'ai plusieurs fichiers d'include, et je ne souhaite les inclure que
lorsque c'est strictement nécessaire, cad pas pour intanciations de pointeur);
Je peux faire un
struct MaStructure;
struct MaStructure *ms_ptr;
J'ai encore le mot clé "struct" nécessaire dans la définition, mais plus par la suite donc ce n'est pas trop gênant... y aurait il cependant possibilité de l'éviter cette première fois?
Je ne vois pas l'intérêt, mais bon:
typedef struct MaStructure MaStructure;
struct MaStructure { int titi; MaStructure * next; };
MaStructure ms;
Maintenant je souhaiterais déclarer cette structure _sans_ la définire (j'ai plusieurs fichiers d'include, et je ne souhaite les inclure que lorsque c'est strictement nécessaire, cad pas pour intanciations de pointeur);
Je peux faire un struct MaStructure; struct MaStructure *ms_ptr;
mais j'aimerais arriver à un :
MaStructure *ms_ptr;
typedef struct Mastructure Mastructure;
-- Horst
Emmanuel Delahaye
In 'fr.comp.lang.c', Antoine Calando wrote:
Je peux faire un struct MaStructure; struct MaStructure *ms_ptr;
mais j'aimerais arriver à un :
MaStructure *ms_ptr;
Existe-t-il une déclaration permetant de le faire?
Oui. C'est la méthode utilisée pour faire des ADT :
- En instanciation, dans l'implémentation uniquement. - En pointeur, partout.
-- -ed- get my email here: http://marreduspam.com/ad672570 The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9 FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', Antoine Calando <acalando.removethisword@free.fr>
wrote:
Je peux faire un
struct MaStructure;
struct MaStructure *ms_ptr;
mais j'aimerais arriver à un :
MaStructure *ms_ptr;
Existe-t-il une déclaration permetant de le faire?
Oui. C'est la méthode utilisée pour faire des ADT :
- En instanciation, dans l'implémentation uniquement.
- En pointeur, partout.
--
-ed- get my email here: http://marreduspam.com/ad672570
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
- En instanciation, dans l'implémentation uniquement. - En pointeur, partout.
-- -ed- get my email here: http://marreduspam.com/ad672570 The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9 FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/