Supprimer un message
philfr
La structure fd_set permet d'isoler la définition d'un API de son implémentation.
Si tu sais que c'est un array de long int, c'est parce que tu es allé lire le fichier <sys/select.h>.
Si tu utilises ton propre array, tu crées du code dépendant de la version de ton compilateur, et de ta version de l'OS. Ça peut marcher presque tout le temps, mais ça peut foirer aussi, et ce n'est certainement pas une bonne façon de programmer. J'espère que tu ne t'amuses pas non plus à voir ce qu'il y a dans un FILE * et à y chipoter...
Idéalement, ce genre de structure devrait être opaque, déclarée par un typedef abstrait dans l'include, et définie dans l'implémentation.
Mais le fait que FD_CLR, FD_ISSET etc. sont implémentés comme des macros empêche de faire cette abstraction.
Que veux-tu faire avec cette structure en dehors de l'utiliser dans les API de select ?
Si tu sais que c'est un array de long int, c'est parce que tu es allé lire le fichier <sys/select.h>.
Si tu utilises ton propre array, tu crées du code dépendant de la version de ton compilateur, et de ta version de l'OS. Ça peut marcher presque tout le temps, mais ça peut foirer aussi, et ce n'est certainement pas une bonne façon de programmer. J'espère que tu ne t'amuses pas non plus à voir ce qu'il y a dans un FILE * et à y chipoter...
Idéalement, ce genre de structure devrait être opaque, déclarée par un typedef abstrait dans l'include, et définie dans l'implémentation.
Mais le fait que FD_CLR, FD_ISSET etc. sont implémentés comme des macros empêche de faire cette abstraction.
Que veux-tu faire avec cette structure en dehors de l'utiliser dans les API de select ?