Se connecter

Informatique

Programmation

Sujet : Type FILE* en C?
1
AgenNgrifgateur
Niveau 9
18 septembre 2018 à 17:30:40

Bonjour/bonsoir, je ne comprends pas exactement le principe de ce type. Je sais qu'il est utilisé pour ouvrir un fichier, retourné par fopen, mais j'aimerais en savoir plus.

Pourquoi ce nom est en majuscule? Pourquoi utilise-t-on un pointeur et pas le type pointé directement dans le cadre de fopen ou de toute autre manipulation des fichiers?
Merci

Matraxylophone
Niveau 7
18 septembre 2018 à 17:45:09

Je suis pas très fort en C mais je crois que si FILE est en majuscule c'est juste parce que les devs à l'époque ont décidé que sa soit comme sa ya pas vraiment de raison particulière.

Pseudo supprimé
Niveau 7
18 septembre 2018 à 17:49:09

Originellement les majuscules en C étaient réservées aux valeurs d'enums et aux macros. Il y a moyen que FILE soit une macro.

Spaceflight
Niveau 8
18 septembre 2018 à 18:45:12

c'est un alias d'une struct _IO_FILE (un typedef)
avant l'invention du typedef, c'était implémenté comme un define d'une autre structure ce me semble dont je me souviens plus le nom

godrik
Niveau 21
18 septembre 2018 à 20:41:37

Pourquoi utilise-t-on un pointeur et pas le type pointé directement dans le cadre de fopen ou de toute autre manipulation des fichiers?

Moralement parceque c'est un type abstrait dont l'implementation depend completement du systeme. La bonne facon d'implementer ca en C est de retourner un pointeur sur un truc pas defini et laisse la lib faire le travail.

AgenNgrifgateur
Niveau 9
19 septembre 2018 à 18:46:50

Le 18 septembre 2018 à 20:41:37 godrik a écrit :

Pourquoi utilise-t-on un pointeur et pas le type pointé directement dans le cadre de fopen ou de toute autre manipulation des fichiers?

Moralement parceque c'est un type abstrait dont l'implementation depend completement du systeme. La bonne facon d'implementer ca en C est de retourner un pointeur sur un truc pas defini et laisse la lib faire le travail.

En gros c'est un type qui n'a pas besoin d'être connu par le programme lui même, ce dernier ce contente de donner son emplacement aux fonctions qui elles savent s'en servir c'est ça?

godrik
Niveau 21
19 septembre 2018 à 19:20:20

Yep

1
Sujet : Type FILE* en C?
   Retour haut de page
Consulter la version web de cette page