OVH Cloud OVH Cloud

tableau à 0 élément

22 réponses
Avatar
Thomas Nemeth
Bonjour,

Je parcourais un site web ce matin et je suis tombé sur un extrait
des nouveautés dans un noyau unix très répandu :

struct sg_ring
{
struct list_head list;
unsigned int num, max;
struct scatterlist sg[0];
};

Je me demande, dans cette structure, ce que signifie ce tableau
à 0 élément... Le K&R spécifie que, je cite :
"Dans une déclaration T D où D est de la forme
D1[expression-constante/opt/]
[...]
Si une expression constante est présente, elle doit être du type
entier et de valeur supérieure à 0."

Je suis perplexe... Quelqu'un a-t-il une solution/explication ?


Thomas.

2 réponses

1 2 3
Avatar
Antoine Leca
En news:, Thierry B. va escriure:
--{ Marc Espie a plopé ceci: }--
Tu veux un exemple ? est-ce que tu sais *generer* un appel de
fonction avec nombre arbitraire de parametres (autrement qu'avec un
switch, forcement limite a 10 ou 15 parametres) ?


Alors là oui, je veux bien l'exemple.


Tu as un système d'exploitation avec un appel système (appelons-le execl()
pour faire preuve d'originalité) qui prend pour arguments le nom du fichier
contenant l'image à exécuter, puis l'ensemble des arguments, puis un
pointeur nul.
En entrée, tu as un tableau de taille variable (VLA).


Un tel problème fut posé aux concepteurs d'Unix ; une solution (V6 ou V7)
fut un nouvel appel système, execv.


Antoine


Avatar
Thierry B.
--{ Antoine Leca a plopé ceci: }--

Tu as un système d'exploitation avec un appel système (appelons-le execl()
pour faire preuve d'originalité) qui prend pour arguments le nom du fichier
contenant l'image à exécuter, puis l'ensemble des arguments, puis un
pointeur nul.
En entrée, tu as un tableau de taille variable (VLA).


Un tel problème fut posé aux concepteurs d'Unix ; une solution (V6 ou V7)
fut un nouvel appel système, execv.


Oui, là je vois mieux pourquoi je me gratte la tête devant la page
de man des execXYZK@#$ à chaque fois que je dois m'en servir.
Merci à tous pour vos explications.


--
Pourquoi le Poulet a traversé la rue ?
* Jacques Chirac : Parce que je n'ai pas encore dissous la route.

1 2 3