Si une fonction est définie pour recevoir un nombre variable
d'arguments, est-elle obligée d'utiliser tous ses arguments ?
La raison de cette question est que dans une telle fonction l'argument
peut ne pas servir effectivement dans certaines conditions.
int fonction ( const unsigned int entier, ... )
{
/* ... */
switch ( entier ) {
case FOO:
if ( ... ) {
/* Faire quelque chose avec va_arg ( ... ) */
} else {
unsigned int junk = va_arg ( ... ); /* Est-ce nécessaire ? */
fprintf ( stderr, "No more room...\n" );
/* ... */
}
}
/* ... */
}
Si une fonction est définie pour recevoir un nombre variable d'arguments, est-elle obligée d'utiliser tous ses arguments ?
à priori non, mais pourquoi poses-tu la question, as-tu essayé, cela a-t-il marché ?
-- DINH V. Hoa,
"le vin c'est pas de l'alcool" -- MAB
Anthony Fleury
Josselin Noirel wrote:
Bonjour,
Si une fonction est définie pour recevoir un nombre variable d'arguments, est-elle obligée d'utiliser tous ses arguments ? La raison de cette question est que dans une telle fonction l'argument peut ne pas servir effectivement dans certaines conditions.
[ ... ]
La ligne
unsigned int junk = va_arg ( ... );
est-elle nécessaire ?
Il n'est pas obligatoire d'utiliser tous les arguments d'une fonctionn normale, c'est la même chose pour les fonctions à nombre d'arguments variable. Mais pourquoi cette question ? un test a soulevé un bug dans ce cas ? Si oui, quel est le code donnant ce comportement ? Car je ne vois rien dans la norme qui l'obligerait, et même un test pour lever les doutes sur mon implémentation ne m'a pas donné de problèmes notables...
Anthony -- It's a bird.. It's a plane.. No, it's KernelMan, faster than a speeding bullet, to your rescue. Doing new kernel versions in under 5 seconds flat.. -- Linus, in the announcement for 1.3.27
Josselin Noirel wrote:
Bonjour,
Si une fonction est définie pour recevoir un nombre variable
d'arguments, est-elle obligée d'utiliser tous ses arguments ?
La raison de cette question est que dans une telle fonction l'argument
peut ne pas servir effectivement dans certaines conditions.
[ ... ]
La ligne
unsigned int junk = va_arg ( ... );
est-elle nécessaire ?
Il n'est pas obligatoire d'utiliser tous les arguments d'une fonctionn
normale, c'est la même chose pour les fonctions à nombre d'arguments
variable.
Mais pourquoi cette question ? un test a soulevé un bug dans ce cas ? Si
oui, quel est le code donnant ce comportement ?
Car je ne vois rien dans la norme qui l'obligerait, et même un test pour
lever les doutes sur mon implémentation ne m'a pas donné de problèmes
notables...
Anthony
--
It's a bird.. It's a plane..
No, it's KernelMan, faster than a speeding bullet, to your rescue.
Doing new kernel versions in under 5 seconds flat..
-- Linus, in the announcement for 1.3.27
Si une fonction est définie pour recevoir un nombre variable d'arguments, est-elle obligée d'utiliser tous ses arguments ? La raison de cette question est que dans une telle fonction l'argument peut ne pas servir effectivement dans certaines conditions.
[ ... ]
La ligne
unsigned int junk = va_arg ( ... );
est-elle nécessaire ?
Il n'est pas obligatoire d'utiliser tous les arguments d'une fonctionn normale, c'est la même chose pour les fonctions à nombre d'arguments variable. Mais pourquoi cette question ? un test a soulevé un bug dans ce cas ? Si oui, quel est le code donnant ce comportement ? Car je ne vois rien dans la norme qui l'obligerait, et même un test pour lever les doutes sur mon implémentation ne m'a pas donné de problèmes notables...
Anthony -- It's a bird.. It's a plane.. No, it's KernelMan, faster than a speeding bullet, to your rescue. Doing new kernel versions in under 5 seconds flat.. -- Linus, in the announcement for 1.3.27
Emmanuel Delahaye
In 'fr.comp.lang.c', (Josselin Noirel) wrote:
Si une fonction est définie pour recevoir un nombre variable d'arguments, est-elle obligée d'utiliser tous ses arguments ?
Non. Mais si ils sont utilisés, ils doivent l'être séquentiellement en partant du plus à gauche.
-- -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', noirel@clipper.ens.fr (Josselin Noirel) wrote:
Si une fonction est définie pour recevoir un nombre variable
d'arguments, est-elle obligée d'utiliser tous ses arguments ?
Non. Mais si ils sont utilisés, ils doivent l'être séquentiellement en
partant du plus à gauche.
--
-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/
Si une fonction est définie pour recevoir un nombre variable d'arguments, est-elle obligée d'utiliser tous ses arguments ?
Non. Mais si ils sont utilisés, ils doivent l'être séquentiellement en partant du plus à gauche.
-- -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/
Emmanuel Delahaye
In 'fr.comp.lang.c', DINH =?iso-8859-15?Q?Viêt_Hoà?= wrote:
Si une fonction est définie pour recevoir un nombre variable d'arguments, est-elle obligée d'utiliser tous ses arguments ?
à priori non, mais pourquoi poses-tu la question, as-tu essayé, cela a-t-il marché ?
Marche, marche pas, ça ne prouve rien...
http://mapage.noos.fr/emdel/init_c.htm#UB
-- -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', DINH =?iso-8859-15?Q?Viêt_Hoà?=
<dinh.viet.hoa@free.fr> wrote:
Si une fonction est définie pour recevoir un nombre variable
d'arguments, est-elle obligée d'utiliser tous ses arguments ?
à priori non, mais pourquoi poses-tu la question, as-tu essayé,
cela a-t-il marché ?
Marche, marche pas, ça ne prouve rien...
http://mapage.noos.fr/emdel/init_c.htm#UB
--
-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', DINH =?iso-8859-15?Q?Viêt_Hoà?= wrote:
Si une fonction est définie pour recevoir un nombre variable d'arguments, est-elle obligée d'utiliser tous ses arguments ?
à priori non, mais pourquoi poses-tu la question, as-tu essayé, cela a-t-il marché ?
Marche, marche pas, ça ne prouve rien...
http://mapage.noos.fr/emdel/init_c.htm#UB
-- -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/
noirel
Anthony Fleury , a écrit ceci :
Il n'est pas obligatoire d'utiliser tous les arguments d'une fonctionn normale, c'est la même chose pour les fonctions à nombre d'arguments variable.
Bon, ben voilà, j'ai ma réponse. La différence que je _vois_ entre les deux types de fonction c'est que la dernière nécessite d'aller chercher explicitement ses arguments (je souligne « vois » parce que mes yeux ne sont pas experts) et que n'allant pas les chercher je me demandais si ça ne laissait pas le bazar d'une façon ou d'une autre (pour faire une analogie fallacieuse, comme si on omettait de faire un wait()).
un test a soulevé un bug dans ce cas ?
Non, il faut, pour poser des questions ? ;-) Je préfère dans une certaine mesure savoir ce que je fais. Je n'ai juste rien trouvé dans la norme qui interdît ou autorisât l'« abandon » d'arguments. J'ai choisi de ne pas me laisser aller à la facilité et de profiter de l'occasion pour faire ma première apparition sur ce forum.
Car je ne vois rien dans la norme qui l'obligerait, et même un test pour lever les doutes sur mon implémentation ne m'a pas donné de problèmes notables...
La norme n'a pas répondu à mes questions donc je demande conseil ici plutôt que d'attendre que ça buggue pour me manifester, parce que je suis un peu suspicieux vis à vis de ce que je produis et lis la norme avec autant de parcimonie que possible. :-)
-- Joss
Anthony Fleury , a écrit ceci :
Il n'est pas obligatoire d'utiliser tous les arguments d'une fonctionn
normale, c'est la même chose pour les fonctions à nombre d'arguments
variable.
Bon, ben voilà, j'ai ma réponse. La différence que je _vois_ entre les
deux types de fonction c'est que la dernière nécessite d'aller chercher
explicitement ses arguments (je souligne « vois » parce que mes yeux ne
sont pas experts) et que n'allant pas les chercher je me demandais si ça
ne laissait pas le bazar d'une façon ou d'une autre (pour faire une
analogie fallacieuse, comme si on omettait de faire un wait()).
un test a soulevé un bug dans ce cas ?
Non, il faut, pour poser des questions ? ;-) Je préfère dans une
certaine mesure savoir ce que je fais. Je n'ai juste rien trouvé dans
la norme qui interdît ou autorisât l'« abandon » d'arguments. J'ai
choisi de ne pas me laisser aller à la facilité et de profiter de
l'occasion pour faire ma première apparition sur ce forum.
Car je ne vois rien dans la norme qui l'obligerait, et même un test pour
lever les doutes sur mon implémentation ne m'a pas donné de problèmes
notables...
La norme n'a pas répondu à mes questions donc je demande conseil ici
plutôt que d'attendre que ça buggue pour me manifester, parce que je
suis un peu suspicieux vis à vis de ce que je produis et lis la norme
avec autant de parcimonie que possible. :-)
Il n'est pas obligatoire d'utiliser tous les arguments d'une fonctionn normale, c'est la même chose pour les fonctions à nombre d'arguments variable.
Bon, ben voilà, j'ai ma réponse. La différence que je _vois_ entre les deux types de fonction c'est que la dernière nécessite d'aller chercher explicitement ses arguments (je souligne « vois » parce que mes yeux ne sont pas experts) et que n'allant pas les chercher je me demandais si ça ne laissait pas le bazar d'une façon ou d'une autre (pour faire une analogie fallacieuse, comme si on omettait de faire un wait()).
un test a soulevé un bug dans ce cas ?
Non, il faut, pour poser des questions ? ;-) Je préfère dans une certaine mesure savoir ce que je fais. Je n'ai juste rien trouvé dans la norme qui interdît ou autorisât l'« abandon » d'arguments. J'ai choisi de ne pas me laisser aller à la facilité et de profiter de l'occasion pour faire ma première apparition sur ce forum.
Car je ne vois rien dans la norme qui l'obligerait, et même un test pour lever les doutes sur mon implémentation ne m'a pas donné de problèmes notables...
La norme n'a pas répondu à mes questions donc je demande conseil ici plutôt que d'attendre que ça buggue pour me manifester, parce que je suis un peu suspicieux vis à vis de ce que je produis et lis la norme avec autant de parcimonie que possible. :-)
Non, il faut, pour poser des questions ? ;-) Je préfère dans une certaine mesure savoir ce que je fais. Je n'ai juste rien trouvé dans la norme qui interdît ou autorisât l'« abandon » d'arguments. J'ai choisi de ne pas me laisser aller à la facilité et de profiter de l'occasion pour faire ma première apparition sur ce forum.
Ce n'est pas obligatoire d'avoir des problèmes en effet pour se poser la question et c'est même une très bonne habitude que de savoir ce que l'on fait, mais la question m'a un peu étonné donc j'ai demandé dans quelle contexte elle se posait :-)
Car je ne vois rien dans la norme qui l'obligerait, et même un test pour lever les doutes sur mon implémentation ne m'a pas donné de problèmes notables...
La norme n'a pas répondu à mes questions donc je demande conseil ici plutôt que d'attendre que ça buggue pour me manifester, parce que je suis un peu suspicieux vis à vis de ce que je produis et lis la norme avec autant de parcimonie que possible. :-)
Ah si tout le monde faisait pareil... !!
Anthony -- It's a bird.. It's a plane.. No, it's KernelMan, faster than a speeding bullet, to your rescue. Doing new kernel versions in under 5 seconds flat.. -- Linus, in the announcement for 1.3.27
Josselin Noirel wrote:
Anthony Fleury , a écrit ceci :
un test a soulevé un bug dans ce cas ?
Non, il faut, pour poser des questions ? ;-) Je préfère dans une
certaine mesure savoir ce que je fais. Je n'ai juste rien trouvé dans
la norme qui interdît ou autorisât l'« abandon » d'arguments. J'ai
choisi de ne pas me laisser aller à la facilité et de profiter de
l'occasion pour faire ma première apparition sur ce forum.
Ce n'est pas obligatoire d'avoir des problèmes en effet pour se poser la
question et c'est même une très bonne habitude que de savoir ce que l'on
fait, mais la question m'a un peu étonné donc j'ai demandé dans quelle
contexte elle se posait :-)
Car je ne vois rien dans la norme qui l'obligerait, et même un test pour
lever les doutes sur mon implémentation ne m'a pas donné de problèmes
notables...
La norme n'a pas répondu à mes questions donc je demande conseil ici
plutôt que d'attendre que ça buggue pour me manifester, parce que je
suis un peu suspicieux vis à vis de ce que je produis et lis la norme
avec autant de parcimonie que possible. :-)
Ah si tout le monde faisait pareil... !!
Anthony
--
It's a bird.. It's a plane..
No, it's KernelMan, faster than a speeding bullet, to your rescue.
Doing new kernel versions in under 5 seconds flat..
-- Linus, in the announcement for 1.3.27
Non, il faut, pour poser des questions ? ;-) Je préfère dans une certaine mesure savoir ce que je fais. Je n'ai juste rien trouvé dans la norme qui interdît ou autorisât l'« abandon » d'arguments. J'ai choisi de ne pas me laisser aller à la facilité et de profiter de l'occasion pour faire ma première apparition sur ce forum.
Ce n'est pas obligatoire d'avoir des problèmes en effet pour se poser la question et c'est même une très bonne habitude que de savoir ce que l'on fait, mais la question m'a un peu étonné donc j'ai demandé dans quelle contexte elle se posait :-)
Car je ne vois rien dans la norme qui l'obligerait, et même un test pour lever les doutes sur mon implémentation ne m'a pas donné de problèmes notables...
La norme n'a pas répondu à mes questions donc je demande conseil ici plutôt que d'attendre que ça buggue pour me manifester, parce que je suis un peu suspicieux vis à vis de ce que je produis et lis la norme avec autant de parcimonie que possible. :-)
Ah si tout le monde faisait pareil... !!
Anthony -- It's a bird.. It's a plane.. No, it's KernelMan, faster than a speeding bullet, to your rescue. Doing new kernel versions in under 5 seconds flat.. -- Linus, in the announcement for 1.3.27
DINH Viêt Hoà
Ce n'est pas obligatoire d'avoir des problèmes en effet pour se poser la question et c'est même une très bonne habitude que de savoir ce que l'on fait, mais la question m'a un peu étonné donc j'ai demandé dans quelle contexte elle se posait :-)
de même, c'était le sens de mes propos même si ça n'avait pas l'air. Naturellement, pour garder la même sémantique que dans les appels de fonction à nombre d'arguments fixes, j'aurai supposé que ce ne soit pas une obligation de tous les référencer au moins une fois.
Ah si tout le monde faisait pareil... !!
:)
-- DINH V. Hoa,
"le vin c'est pas de l'alcool" -- MAB
Ce n'est pas obligatoire d'avoir des problèmes en effet pour se poser la
question et c'est même une très bonne habitude que de savoir ce que l'on
fait, mais la question m'a un peu étonné donc j'ai demandé dans quelle
contexte elle se posait :-)
de même, c'était le sens de mes propos même si ça n'avait pas l'air.
Naturellement, pour garder la même sémantique que dans les appels
de fonction à nombre d'arguments fixes, j'aurai supposé que ce ne soit
pas une obligation de tous les référencer au moins une fois.
Ce n'est pas obligatoire d'avoir des problèmes en effet pour se poser la question et c'est même une très bonne habitude que de savoir ce que l'on fait, mais la question m'a un peu étonné donc j'ai demandé dans quelle contexte elle se posait :-)
de même, c'était le sens de mes propos même si ça n'avait pas l'air. Naturellement, pour garder la même sémantique que dans les appels de fonction à nombre d'arguments fixes, j'aurai supposé que ce ne soit pas une obligation de tous les référencer au moins une fois.
Ah si tout le monde faisait pareil... !!
:)
-- DINH V. Hoa,
"le vin c'est pas de l'alcool" -- MAB
Emmanuel Delahaye
In 'fr.comp.lang.c', (Josselin Noirel) wrote:
La norme n'a pas répondu à mes questions donc je demande conseil ici plutôt que d'attendre que ça buggue pour me manifester, parce que je suis un peu suspicieux vis à vis de ce que je produis et lis la norme avec autant de parcimonie que possible. :-)
Pourtant, la lecture de la norme mérite plus que de la parcimonie.
A mois qu'il y ait un problème de vocabulaire, et que tu veuilles dire 'avec autant d'attention' ou 'autant de précision'.
-- -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', noirel@clipper.ens.fr (Josselin Noirel) wrote:
La norme n'a pas répondu à mes questions donc je demande conseil ici
plutôt que d'attendre que ça buggue pour me manifester, parce que je
suis un peu suspicieux vis à vis de ce que je produis et lis la norme
avec autant de parcimonie que possible. :-)
Pourtant, la lecture de la norme mérite plus que de la parcimonie.
A mois qu'il y ait un problème de vocabulaire, et que tu veuilles dire 'avec
autant d'attention' ou 'autant de précision'.
--
-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/
La norme n'a pas répondu à mes questions donc je demande conseil ici plutôt que d'attendre que ça buggue pour me manifester, parce que je suis un peu suspicieux vis à vis de ce que je produis et lis la norme avec autant de parcimonie que possible. :-)
Pourtant, la lecture de la norme mérite plus que de la parcimonie.
A mois qu'il y ait un problème de vocabulaire, et que tu veuilles dire 'avec autant d'attention' ou 'autant de précision'.
-- -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/
Horst Kraemer
On 30 May 2004 17:04:06 GMT, Emmanuel Delahaye wrote:
In 'fr.comp.lang.c', (Josselin Noirel) wrote:
Si une fonction est définie pour recevoir un nombre variable d'arguments, est-elle obligée d'utiliser tous ses arguments ?
Non. Mais si ils sont utilisés, ils doivent l'être séquentiellement en partant du plus à gauche.