Suis je assure que v1 sera initialise a f1(bar) avant que l'appel f2(v1) soit fait ?
Ou est il plus sage d'ecrire : int foo(int bar) { int v1; int v2;
v1ñ(bar); v2ò(v1);
Merci par avance de vos reponses. En cas de doute (là, j n'en aurais pas eu, mais c'est peut-être une
erreur), je mets ce qu'il fait de ligne et de parenthèses. Pour gagner deux lignes : int foo(int bar) { int v1; int v2ò(v1ñ(bar));
/* corps de la fct */
} Mais j'attends les autres réponses sur l'ordre des initialisations. -- Pierre
Antoine Leca
En , Tibo++ (was Zorrino) va escriure:
int v1ñ(bar); int v2ò(v1); Suis je assure que v1 sera initialise a f1(bar) avant que l'appel f2(v1) soit fait ?
Non.
En fait, la norme te le garantit. C99 l'explicite mot-à-mot: 6.7.5p3, "la fin d'un déclarateur entier est un point de séquence". Mais ce n'est pas aussi clair avec C90, même si l'équivalent y est, même si l'annexe de 20 lignes sur les points de séquence ne laisse aucune équivoque. Résultat, il y a un risque qu'un compilateur machin ne le fasse pas, et là tu seras dans de beaux draps...
Maintenant, la réponse officielle est « oui ».
Ou est il plus sage d'ecrire :
Oui, en tous cas dans l'exemple que tu donnes (« sage » est exactement le bon mot ici). Bien sûr, si tu as outrageusement simplifié, peut-être que la réponse n'est pas aussi limpide. Tu as les infos pour interpréter.
Antoine
En 4098FD1A.928D3A8C@no.invalid, Tibo++ (was Zorrino) va escriure:
int v1ñ(bar);
int v2ò(v1);
Suis je assure que v1 sera initialise a f1(bar)
avant que l'appel f2(v1) soit fait ?
Non.
En fait, la norme te le garantit. C99 l'explicite mot-à-mot: 6.7.5p3, "la
fin d'un déclarateur entier est un point de séquence". Mais ce n'est pas
aussi clair avec C90, même si l'équivalent y est, même si l'annexe de 20
lignes sur les points de séquence ne laisse aucune équivoque. Résultat, il y
a un risque qu'un compilateur machin ne le fasse pas, et là tu seras dans de
beaux draps...
Maintenant, la réponse officielle est « oui ».
Ou est il plus sage d'ecrire :
Oui, en tous cas dans l'exemple que tu donnes (« sage » est exactement le
bon mot ici). Bien sûr, si tu as outrageusement simplifié, peut-être que la
réponse n'est pas aussi limpide. Tu as les infos pour interpréter.
int v1ñ(bar); int v2ò(v1); Suis je assure que v1 sera initialise a f1(bar) avant que l'appel f2(v1) soit fait ?
Non.
En fait, la norme te le garantit. C99 l'explicite mot-à-mot: 6.7.5p3, "la fin d'un déclarateur entier est un point de séquence". Mais ce n'est pas aussi clair avec C90, même si l'équivalent y est, même si l'annexe de 20 lignes sur les points de séquence ne laisse aucune équivoque. Résultat, il y a un risque qu'un compilateur machin ne le fasse pas, et là tu seras dans de beaux draps...
Maintenant, la réponse officielle est « oui ».
Ou est il plus sage d'ecrire :
Oui, en tous cas dans l'exemple que tu donnes (« sage » est exactement le bon mot ici). Bien sûr, si tu as outrageusement simplifié, peut-être que la réponse n'est pas aussi limpide. Tu as les infos pour interpréter.
Antoine
Laurent Deniau
Tibo++ (was Zorrino) wrote:
Bonjour a tous,
Voici ma question :
Soit l'ecriture suivante
int foo(int bar) { int v1ñ(bar); int v2ò(v1);
/* corps de la fct */
}
Suis je assure que v1 sera initialise a f1(bar) avant que l'appel f2(v1) soit fait ?
Oui, sans aucun doute. Si c'est pas le cas, le compilo n'est pas conforme (et je dirais meme de tres mauvaise qualite!).
a+, ld.
Tibo++ (was Zorrino) wrote:
Bonjour a tous,
Voici ma question :
Soit l'ecriture suivante
int foo(int bar) {
int v1ñ(bar);
int v2ò(v1);
/* corps de la fct */
}
Suis je assure que v1 sera initialise a f1(bar)
avant que l'appel f2(v1) soit fait ?
Oui, sans aucun doute. Si c'est pas le cas, le compilo n'est pas
conforme (et je dirais meme de tres mauvaise qualite!).
Suis je assure que v1 sera initialise a f1(bar) avant que l'appel f2(v1) soit fait ?
Oui, sans aucun doute. Si c'est pas le cas, le compilo n'est pas conforme (et je dirais meme de tres mauvaise qualite!).
a+, ld.
Horst Kraemer
On Wed, 05 May 2004 16:41:30 +0200, "Tibo++ (was Zorrino)" wrote:
Bonjour a tous,
Voici ma question :
Soit l'ecriture suivante
int foo(int bar) { int v1ñ(bar); int v2ò(v1);
/* corps de la fct */
}
Suis je assure que v1 sera initialise a f1(bar) avant que l'appel f2(v1) soit fait ?
La norme dit que les objets automatiques définis dans un bloc {} seront initialisés dans l'ordre dans lequel ils apparaissent dans la source. Donc tu es assuré si ton compilateur respecte la norme ;-)
-- Horst
On Wed, 05 May 2004 16:41:30 +0200, "Tibo++ (was Zorrino)"
<no@no.invalid> wrote:
Bonjour a tous,
Voici ma question :
Soit l'ecriture suivante
int foo(int bar) {
int v1ñ(bar);
int v2ò(v1);
/* corps de la fct */
}
Suis je assure que v1 sera initialise a f1(bar)
avant que l'appel f2(v1) soit fait ?
La norme dit que les objets automatiques définis dans un bloc {}
seront initialisés dans l'ordre dans lequel ils apparaissent dans la
source. Donc tu es assuré si ton compilateur respecte la norme ;-)
On Wed, 05 May 2004 16:41:30 +0200, "Tibo++ (was Zorrino)" wrote:
Bonjour a tous,
Voici ma question :
Soit l'ecriture suivante
int foo(int bar) { int v1ñ(bar); int v2ò(v1);
/* corps de la fct */
}
Suis je assure que v1 sera initialise a f1(bar) avant que l'appel f2(v1) soit fait ?
La norme dit que les objets automatiques définis dans un bloc {} seront initialisés dans l'ordre dans lequel ils apparaissent dans la source. Donc tu es assuré si ton compilateur respecte la norme ;-)
-- Horst
Emmanuel Delahaye
In 'fr.comp.lang.c', "Tibo++ (was Zorrino)" wrote:
int foo(int bar) { int v1ñ(bar); int v2ò(v1);
/* corps de la fct */
}
Suis je assure que v1 sera initialise a f1(bar) avant que l'appel f2(v1) soit fait ?
Oui.
Ou est il plus sage d'ecrire : int foo(int bar) { int v1; int v2;
v1ñ(bar); v2ò(v1);
Comme tu veux. Je préfère la première forme.
-- -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', "Tibo++ (was Zorrino)" <no@no.invalid> wrote:
int foo(int bar) {
int v1ñ(bar);
int v2ò(v1);
/* corps de la fct */
}
Suis je assure que v1 sera initialise a f1(bar)
avant que l'appel f2(v1) soit fait ?
Oui.
Ou est il plus sage d'ecrire :
int foo(int bar) {
int v1;
int v2;
v1ñ(bar);
v2ò(v1);
Comme tu veux. Je préfère la première forme.
--
-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', "Tibo++ (was Zorrino)" wrote:
int foo(int bar) { int v1ñ(bar); int v2ò(v1);
/* corps de la fct */
}
Suis je assure que v1 sera initialise a f1(bar) avant que l'appel f2(v1) soit fait ?
Oui.
Ou est il plus sage d'ecrire : int foo(int bar) { int v1; int v2;
v1ñ(bar); v2ò(v1);
Comme tu veux. Je préfère la première forme.
-- -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/
K. Ahausse
"Tibo++ (was Zorrino)" a écrit dans le message de news:
Bonjour a tous,
Voici ma question :
Soit l'ecriture suivante
int foo(int bar) { int v1ñ(bar); int v2ò(v1);
/* corps de la fct */
}
Suis je assure que v1 sera initialise a f1(bar) avant que l'appel f2(v1) soit fait ?
Ou est il plus sage d'ecrire : int foo(int bar) { int v1; int v2;
v1ñ(bar); v2ò(v1);
Merci par avance de vos reponses.
-- Tibo++
Marrant, avec une seule norme on n'a les deux réponses possibles.
Le truc, c'est qu'en cherchant bien il n'existe pas un seul compilateur respectant à la lettre cette norme, sans meme parler des interpretations antagonistes de cette norme.
"Tibo++ (was Zorrino)" <no@no.invalid> a écrit dans le message de
news:4098FD1A.928D3A8C@no.invalid...
Bonjour a tous,
Voici ma question :
Soit l'ecriture suivante
int foo(int bar) {
int v1ñ(bar);
int v2ò(v1);
/* corps de la fct */
}
Suis je assure que v1 sera initialise a f1(bar)
avant que l'appel f2(v1) soit fait ?
Ou est il plus sage d'ecrire :
int foo(int bar) {
int v1;
int v2;
v1ñ(bar);
v2ò(v1);
Merci par avance de vos reponses.
--
Tibo++
Marrant, avec une seule norme on n'a les deux réponses possibles.
Le truc, c'est qu'en cherchant bien il n'existe pas un seul compilateur
respectant à la lettre cette norme, sans meme parler des interpretations
antagonistes de cette norme.
"Tibo++ (was Zorrino)" a écrit dans le message de news:
Bonjour a tous,
Voici ma question :
Soit l'ecriture suivante
int foo(int bar) { int v1ñ(bar); int v2ò(v1);
/* corps de la fct */
}
Suis je assure que v1 sera initialise a f1(bar) avant que l'appel f2(v1) soit fait ?
Ou est il plus sage d'ecrire : int foo(int bar) { int v1; int v2;
v1ñ(bar); v2ò(v1);
Merci par avance de vos reponses.
-- Tibo++
Marrant, avec une seule norme on n'a les deux réponses possibles.
Le truc, c'est qu'en cherchant bien il n'existe pas un seul compilateur respectant à la lettre cette norme, sans meme parler des interpretations antagonistes de cette norme.
Tibo++
"Tibo++ (was Zorrino)" wrote:
Suis je assure que v1 sera initialise a f1(bar) avant que l'appel f2(v1) soit fait ?
Si j'ai bien compris c99 est tres clair a ce sujet, mais c90 pourrais laisser planer un doute.
Le code que j'ecrit doit etre livre a plusieurs clients sous forme de fichiers sources qu'ils compileront chacun avec leur compilateur.
Donc dans ce cadre je vais utiliser la seconde forme meme si elle est moins elegante, ca m'evitera peut etre des ennuis.
Merci d'avoir pris le temps de repondre.
-- Tibo++
"Tibo++ (was Zorrino)" wrote:
Suis je assure que v1 sera initialise a f1(bar)
avant que l'appel f2(v1) soit fait ?
Si j'ai bien compris c99 est tres clair a ce sujet,
mais c90 pourrais laisser planer un doute.
Le code que j'ecrit doit etre livre a plusieurs
clients sous forme de fichiers sources qu'ils
compileront chacun avec leur compilateur.
Donc dans ce cadre je vais utiliser la seconde
forme meme si elle est moins elegante, ca
m'evitera peut etre des ennuis.