On 14 sep, 20:01, (Marc Espie) wrote:>En quel sens FILE est une connerie ?
Par exemple, ca te rend impossible de prototyper une fonction qui prend
un fichier ouvert en parametre sans inclure stdio.h...
Ce qui me parait être de bon sens. Comment utiliser un type qui
n'aurait pas été défini ?si c'est une fonction qui le manipule comme handle opaque, et qui se contente
de le passer a une autre fonction, c'est tres cretin.
Techniquement il est très rare que FILE soit un véritable type opaque,
car pour implémenter les macros getc()et putc(), on a besoin des
éléments de la structure...
On 14 sep, 20:01, es...@lain.home (Marc Espie) wrote:
>En quel sens FILE est une connerie ?
Par exemple, ca te rend impossible de prototyper une fonction qui prend
un fichier ouvert en parametre sans inclure stdio.h...
Ce qui me parait être de bon sens. Comment utiliser un type qui
n'aurait pas été défini ?
si c'est une fonction qui le manipule comme handle opaque, et qui se contente
de le passer a une autre fonction, c'est tres cretin.
Techniquement il est très rare que FILE soit un véritable type opaque,
car pour implémenter les macros getc()et putc(), on a besoin des
éléments de la structure...
On 14 sep, 20:01, (Marc Espie) wrote:>En quel sens FILE est une connerie ?
Par exemple, ca te rend impossible de prototyper une fonction qui prend
un fichier ouvert en parametre sans inclure stdio.h...
Ce qui me parait être de bon sens. Comment utiliser un type qui
n'aurait pas été défini ?si c'est une fonction qui le manipule comme handle opaque, et qui se contente
de le passer a une autre fonction, c'est tres cretin.
Techniquement il est très rare que FILE soit un véritable type opaque,
car pour implémenter les macros getc()et putc(), on a besoin des
éléments de la structure...
| Techniquement il est très rare que FILE soit un véritable type opaque,
| car pour implémenter les macros getc()et putc(), on a besoin des
| éléments de la structure...
Non, pas forcément.
C'est parfaitement légal de les définir commes des macros qui délèguent
le vrai boulot à des fonctions internes.
| Techniquement il est très rare que FILE soit un véritable type opaque,
| car pour implémenter les macros getc()et putc(), on a besoin des
| éléments de la structure...
Non, pas forcément.
C'est parfaitement légal de les définir commes des macros qui délèguent
le vrai boulot à des fonctions internes.
| Techniquement il est très rare que FILE soit un véritable type opaque,
| car pour implémenter les macros getc()et putc(), on a besoin des
| éléments de la structure...
Non, pas forcément.
C'est parfaitement légal de les définir commes des macros qui délèguent
le vrai boulot à des fonctions internes.
(Marc Espie) writes:
| In article
,
| -ed- wrote:
| >On 14 sep, 20:01, (Marc Espie) wrote:
| >> >En quel sens FILE est une connerie ?
| >>
| >> Par exemple, ca te rend impossible de prototyper une fonction qui prend
| >> un fichier ouvert en parametre sans inclure stdio.h...
| >
| >Ce qui me parait être de bon sens. Comment utiliser un type qui
| >n'aurait pas été défini ?
| >
| >> si c'est une fonction qui le manipule comme handle opaque, et qui
se contente
| >> de le passer a une autre fonction, c'est tres cretin.
| >
| >Techniquement il est très rare que FILE soit un véritable type opaque,
| >car pour implémenter les macros getc()et putc(), on a besoin des
| >éléments de la structure...
|
| Je ne vois pas trop comment FILE peut etre autre chose qu'une structure
| (surtout vu que c'est FILE * qu'on utilise).
Et pourtant open() de POSIX n'a pas de mal à retourner un entier comme
abstraction pour l'entité de fichier derrière.
espie@lain.home (Marc Espie) writes:
| In article
<75df0b93-da6f-4e58-861f-2705ed29f96d@h30g2000vbr.googlegroups.com>,
| -ed- <emmanuel.delahaye@gmail.com> wrote:
| >On 14 sep, 20:01, es...@lain.home (Marc Espie) wrote:
| >> >En quel sens FILE est une connerie ?
| >>
| >> Par exemple, ca te rend impossible de prototyper une fonction qui prend
| >> un fichier ouvert en parametre sans inclure stdio.h...
| >
| >Ce qui me parait être de bon sens. Comment utiliser un type qui
| >n'aurait pas été défini ?
| >
| >> si c'est une fonction qui le manipule comme handle opaque, et qui
se contente
| >> de le passer a une autre fonction, c'est tres cretin.
| >
| >Techniquement il est très rare que FILE soit un véritable type opaque,
| >car pour implémenter les macros getc()et putc(), on a besoin des
| >éléments de la structure...
|
| Je ne vois pas trop comment FILE peut etre autre chose qu'une structure
| (surtout vu que c'est FILE * qu'on utilise).
Et pourtant open() de POSIX n'a pas de mal à retourner un entier comme
abstraction pour l'entité de fichier derrière.
(Marc Espie) writes:
| In article
,
| -ed- wrote:
| >On 14 sep, 20:01, (Marc Espie) wrote:
| >> >En quel sens FILE est une connerie ?
| >>
| >> Par exemple, ca te rend impossible de prototyper une fonction qui prend
| >> un fichier ouvert en parametre sans inclure stdio.h...
| >
| >Ce qui me parait être de bon sens. Comment utiliser un type qui
| >n'aurait pas été défini ?
| >
| >> si c'est une fonction qui le manipule comme handle opaque, et qui
se contente
| >> de le passer a une autre fonction, c'est tres cretin.
| >
| >Techniquement il est très rare que FILE soit un véritable type opaque,
| >car pour implémenter les macros getc()et putc(), on a besoin des
| >éléments de la structure...
|
| Je ne vois pas trop comment FILE peut etre autre chose qu'une structure
| (surtout vu que c'est FILE * qu'on utilise).
Et pourtant open() de POSIX n'a pas de mal à retourner un entier comme
abstraction pour l'entité de fichier derrière.
Bsr/jr,
Je commence avec les pointeurs et je voudrais comprendre le code de ce
tutorial :http://www.ltam.lu/Tutoriel_Ansi_C/
Je ne sais pas comment l'auteur à organiser ces liens html mais je ne
peux pas copier-coller le lien exact de la page ou se trouve le
code...pour faire bref, il s'agit de l'exercice 9.5 dans le chapitre
des pointeurs.
Il y a diverses questions dans à l'intérieur du code ci-dessous :
Bsr/jr,
Je commence avec les pointeurs et je voudrais comprendre le code de ce
tutorial :http://www.ltam.lu/Tutoriel_Ansi_C/
Je ne sais pas comment l'auteur à organiser ces liens html mais je ne
peux pas copier-coller le lien exact de la page ou se trouve le
code...pour faire bref, il s'agit de l'exercice 9.5 dans le chapitre
des pointeurs.
Il y a diverses questions dans à l'intérieur du code ci-dessous :
Bsr/jr,
Je commence avec les pointeurs et je voudrais comprendre le code de ce
tutorial :http://www.ltam.lu/Tutoriel_Ansi_C/
Je ne sais pas comment l'auteur à organiser ces liens html mais je ne
peux pas copier-coller le lien exact de la page ou se trouve le
code...pour faire bref, il s'agit de l'exercice 9.5 dans le chapitre
des pointeurs.
Il y a diverses questions dans à l'intérieur du code ci-dessous :
(Marc Espie) writes:
| In article ,
| Gabriel Dos Reis wrote:
| > (Marc Espie) writes:
| >
| >| In article
| >,
| >| -ed- wrote:
| >| >On 14 sep, 20:01, (Marc Espie) wrote:
| >| >> >En quel sens FILE est une connerie ?
| >| >>
| >| >> Par exemple, ca te rend impossible de prototyper une fonction qui prend
| >| >> un fichier ouvert en parametre sans inclure stdio.h...
| >| >
| >| >Ce qui me parait être de bon sens. Comment utiliser un type qui
| >| >n'aurait pas été défini ?
| >| >
| >| >> si c'est une fonction qui le manipule comme handle opaque, et qui
| >se contente
| >| >> de le passer a une autre fonction, c'est tres cretin.
| >| >
| >| >Techniquement il est très rare que FILE soit un véritable type opaque,
| >| >car pour implémenter les macros getc()et putc(), on a besoin des
| >| >éléments de la structure...
| >|
| >| Je ne vois pas trop comment FILE peut etre autre chose qu'une structure
| >| (surtout vu que c'est FILE * qu'on utilise).
| >
| >Et pourtant open() de POSIX n'a pas de mal à retourner un entier comme
| >abstraction pour l'entité de fichier derrière.
|
| open retourne un int, pas un int *.
Je crois que j'ai bien dit entier et pas autre chose.
| La nuance est quand meme de taille.
C'est exact. Mais, je ne vois personne prétendre que open() retourne un
« int * » Donc, effectivement la différence est de taille, mais elle
n'a aucune espèce d'importance ici.
| Et il ne se cache "rien" derriere, en particulier pas de tampon manipulable
| au niveau utilisateur
Quelque chose se cache derrière ce « int ». Tu ne peux pas te fabriquer
n'importe quel entier comme cela et le passer comme premier paramètre à
read() et espérer que quelque chose de merveilleux va se réaliser.
| (dis, tu vas quand meme pas essayer de m'apprendre l'API Unix ?)
Non, juste la notion d'abstraction :-p
espie@lain.home (Marc Espie) writes:
| In article <87hbv3q3in.fsf@gauss.cs.tamu.edu>,
| Gabriel Dos Reis <gdr@cs.tamu.edu> wrote:
| >espie@lain.home (Marc Espie) writes:
| >
| >| In article
| ><75df0b93-da6f-4e58-861f-2705ed29f96d@h30g2000vbr.googlegroups.com>,
| >| -ed- <emmanuel.delahaye@gmail.com> wrote:
| >| >On 14 sep, 20:01, es...@lain.home (Marc Espie) wrote:
| >| >> >En quel sens FILE est une connerie ?
| >| >>
| >| >> Par exemple, ca te rend impossible de prototyper une fonction qui prend
| >| >> un fichier ouvert en parametre sans inclure stdio.h...
| >| >
| >| >Ce qui me parait être de bon sens. Comment utiliser un type qui
| >| >n'aurait pas été défini ?
| >| >
| >| >> si c'est une fonction qui le manipule comme handle opaque, et qui
| >se contente
| >| >> de le passer a une autre fonction, c'est tres cretin.
| >| >
| >| >Techniquement il est très rare que FILE soit un véritable type opaque,
| >| >car pour implémenter les macros getc()et putc(), on a besoin des
| >| >éléments de la structure...
| >|
| >| Je ne vois pas trop comment FILE peut etre autre chose qu'une structure
| >| (surtout vu que c'est FILE * qu'on utilise).
| >
| >Et pourtant open() de POSIX n'a pas de mal à retourner un entier comme
| >abstraction pour l'entité de fichier derrière.
|
| open retourne un int, pas un int *.
Je crois que j'ai bien dit entier et pas autre chose.
| La nuance est quand meme de taille.
C'est exact. Mais, je ne vois personne prétendre que open() retourne un
« int * » Donc, effectivement la différence est de taille, mais elle
n'a aucune espèce d'importance ici.
| Et il ne se cache "rien" derriere, en particulier pas de tampon manipulable
| au niveau utilisateur
Quelque chose se cache derrière ce « int ». Tu ne peux pas te fabriquer
n'importe quel entier comme cela et le passer comme premier paramètre à
read() et espérer que quelque chose de merveilleux va se réaliser.
| (dis, tu vas quand meme pas essayer de m'apprendre l'API Unix ?)
Non, juste la notion d'abstraction :-p
(Marc Espie) writes:
| In article ,
| Gabriel Dos Reis wrote:
| > (Marc Espie) writes:
| >
| >| In article
| >,
| >| -ed- wrote:
| >| >On 14 sep, 20:01, (Marc Espie) wrote:
| >| >> >En quel sens FILE est une connerie ?
| >| >>
| >| >> Par exemple, ca te rend impossible de prototyper une fonction qui prend
| >| >> un fichier ouvert en parametre sans inclure stdio.h...
| >| >
| >| >Ce qui me parait être de bon sens. Comment utiliser un type qui
| >| >n'aurait pas été défini ?
| >| >
| >| >> si c'est une fonction qui le manipule comme handle opaque, et qui
| >se contente
| >| >> de le passer a une autre fonction, c'est tres cretin.
| >| >
| >| >Techniquement il est très rare que FILE soit un véritable type opaque,
| >| >car pour implémenter les macros getc()et putc(), on a besoin des
| >| >éléments de la structure...
| >|
| >| Je ne vois pas trop comment FILE peut etre autre chose qu'une structure
| >| (surtout vu que c'est FILE * qu'on utilise).
| >
| >Et pourtant open() de POSIX n'a pas de mal à retourner un entier comme
| >abstraction pour l'entité de fichier derrière.
|
| open retourne un int, pas un int *.
Je crois que j'ai bien dit entier et pas autre chose.
| La nuance est quand meme de taille.
C'est exact. Mais, je ne vois personne prétendre que open() retourne un
« int * » Donc, effectivement la différence est de taille, mais elle
n'a aucune espèce d'importance ici.
| Et il ne se cache "rien" derriere, en particulier pas de tampon manipulable
| au niveau utilisateur
Quelque chose se cache derrière ce « int ». Tu ne peux pas te fabriquer
n'importe quel entier comme cela et le passer comme premier paramètre à
read() et espérer que quelque chose de merveilleux va se réaliser.
| (dis, tu vas quand meme pas essayer de m'apprendre l'API Unix ?)
Non, juste la notion d'abstraction :-p