On 7 juil, 10:02, James Kanze wrote:
> Enfin, pour revenir à ta question : tout ça, c'est la tout
> première phase de traduction, bien avant même la tokenisation.
> Il s'ensuit qu'un compilateur ne peut pas faire de distinction
> entre les caractères dans les identificateurs, dans les
> litéraux, et même dans les commentaires. Un compilateur qui
> accepte « été » dans un commentaire, dans un encodage
> quelconque, doit l'accepter aussi comme identificateur dans le
> même encodage ; formellement, ce que le compilateur voit après
> la première phase de traduction, c'est u00C9tu00C9 (ou quelque
> chose qu'il est obligé à traiter de façon identique). Où
> qu'apparaissent cette chaîne de caractères.
D'accord, nous avons donc eu la même compréhension du texte. J'hésite
à saisir un bug report à gcc.
On 7 juil, 10:02, James Kanze <james.ka...@gmail.com> wrote:
> Enfin, pour revenir à ta question : tout ça, c'est la tout
> première phase de traduction, bien avant même la tokenisation.
> Il s'ensuit qu'un compilateur ne peut pas faire de distinction
> entre les caractères dans les identificateurs, dans les
> litéraux, et même dans les commentaires. Un compilateur qui
> accepte « été » dans un commentaire, dans un encodage
> quelconque, doit l'accepter aussi comme identificateur dans le
> même encodage ; formellement, ce que le compilateur voit après
> la première phase de traduction, c'est u00C9tu00C9 (ou quelque
> chose qu'il est obligé à traiter de façon identique). Où
> qu'apparaissent cette chaîne de caractères.
D'accord, nous avons donc eu la même compréhension du texte. J'hésite
à saisir un bug report à gcc.
On 7 juil, 10:02, James Kanze wrote:
> Enfin, pour revenir à ta question : tout ça, c'est la tout
> première phase de traduction, bien avant même la tokenisation.
> Il s'ensuit qu'un compilateur ne peut pas faire de distinction
> entre les caractères dans les identificateurs, dans les
> litéraux, et même dans les commentaires. Un compilateur qui
> accepte « été » dans un commentaire, dans un encodage
> quelconque, doit l'accepter aussi comme identificateur dans le
> même encodage ; formellement, ce que le compilateur voit après
> la première phase de traduction, c'est u00C9tu00C9 (ou quelque
> chose qu'il est obligé à traiter de façon identique). Où
> qu'apparaissent cette chaîne de caractères.
D'accord, nous avons donc eu la même compréhension du texte. J'hésite
à saisir un bug report à gcc.
"" wri tes:
> On 7 juil, 10:02, James Kanze wrote:
> > Enfin, pour revenir à ta question : tout ça, c'est la tout
> > première phase de traduction, bien avant même la tokenisation.
> > Il s'ensuit qu'un compilateur ne peut pas faire de distinction
> > entre les caractères dans les identificateurs, dans les
> > litéraux, et même dans les commentaires. Un compilateur qui
> > accepte « été » dans un commentaire, dans un encodage
> > quelconque, doit l'accepter aussi comme identificateur dans le
> > même encodage ; formellement, ce que le compilateur voit après
> > la première phase de traduction, c'est u00C9tu00C9 (ou quelque
> > chose qu'il est obligé à traiter de façon identique). Où
> > qu'apparaissent cette chaîne de caractères.
> D'accord, nous avons donc eu la même compréhension du texte.
> J'hésite à saisir un bug report à gcc.
Je crois qu'ils sont au courant. Doc de gcc:
Unless the experimental -fextended-identifiers option is used,
GCC does not permit the use of characters outside the ASCII
range, nor `u' and `U' escapes, in identifiers. Even with
that option, characters outside the ASCII range can only be
specified with the `u' and `U' escapes, not used directly in
identifiers.
"loic.actarus.j...@numericable.fr" <loic.actarus.j...@numericable.fr> wri tes:
> On 7 juil, 10:02, James Kanze <james.ka...@gmail.com> wrote:
> > Enfin, pour revenir à ta question : tout ça, c'est la tout
> > première phase de traduction, bien avant même la tokenisation.
> > Il s'ensuit qu'un compilateur ne peut pas faire de distinction
> > entre les caractères dans les identificateurs, dans les
> > litéraux, et même dans les commentaires. Un compilateur qui
> > accepte « été » dans un commentaire, dans un encodage
> > quelconque, doit l'accepter aussi comme identificateur dans le
> > même encodage ; formellement, ce que le compilateur voit après
> > la première phase de traduction, c'est u00C9tu00C9 (ou quelque
> > chose qu'il est obligé à traiter de façon identique). Où
> > qu'apparaissent cette chaîne de caractères.
> D'accord, nous avons donc eu la même compréhension du texte.
> J'hésite à saisir un bug report à gcc.
Je crois qu'ils sont au courant. Doc de gcc:
Unless the experimental -fextended-identifiers option is used,
GCC does not permit the use of characters outside the ASCII
range, nor `u' and `U' escapes, in identifiers. Even with
that option, characters outside the ASCII range can only be
specified with the `u' and `U' escapes, not used directly in
identifiers.
"" wri tes:
> On 7 juil, 10:02, James Kanze wrote:
> > Enfin, pour revenir à ta question : tout ça, c'est la tout
> > première phase de traduction, bien avant même la tokenisation.
> > Il s'ensuit qu'un compilateur ne peut pas faire de distinction
> > entre les caractères dans les identificateurs, dans les
> > litéraux, et même dans les commentaires. Un compilateur qui
> > accepte « été » dans un commentaire, dans un encodage
> > quelconque, doit l'accepter aussi comme identificateur dans le
> > même encodage ; formellement, ce que le compilateur voit après
> > la première phase de traduction, c'est u00C9tu00C9 (ou quelque
> > chose qu'il est obligé à traiter de façon identique). Où
> > qu'apparaissent cette chaîne de caractères.
> D'accord, nous avons donc eu la même compréhension du texte.
> J'hésite à saisir un bug report à gcc.
Je crois qu'ils sont au courant. Doc de gcc:
Unless the experimental -fextended-identifiers option is used,
GCC does not permit the use of characters outside the ASCII
range, nor `u' and `U' escapes, in identifiers. Even with
that option, characters outside the ASCII range can only be
specified with the `u' and `U' escapes, not used directly in
identifiers.
On Jul 7, 6:12 pm, Jean-Marc Bourguet wrote:
> "" writes:
> > On 7 juil, 10:02, James Kanze wrote:
> > > Enfin, pour revenir à ta question : tout ça, c'est la tout
> > > première phase de traduction, bien avant même la tokenisation.
> > > Il s'ensuit qu'un compilateur ne peut pas faire de distinction
> > > entre les caractères dans les identificateurs, dans les
> > > litéraux, et même dans les commentaires. Un compilateur qui
> > > accepte « été » dans un commentaire, dans un encodage
> > > quelconque, doit l'accepter aussi comme identificateur dans le
> > > même encodage ; formellement, ce que le compilateur voit après
> > > la première phase de traduction, c'est u00C9tu00C9 (ou quelque
> > > chose qu'il est obligé à traiter de façon identique). Où
> > > qu'apparaissent cette chaîne de caractères.
> > D'accord, nous avons donc eu la même compréhension du texte.
> > J'hésite à saisir un bug report à gcc.
> Je crois qu'ils sont au courant. Doc de gcc:
> Unless the experimental -fextended-identifiers option is used,
> GCC does not permit the use of characters outside the ASCII
> range, nor `u' and `U' escapes, in identifiers. Even with
> that option, characters outside the ASCII range can only be
> specified with the `u' and `U' escapes, not used directly in
> identifiers.
Et je crois qu'ailleurs (constantes de chaîne, commentaires), je
ne crois pas qu'il les traite réelement non plus. L'erreur, s'il
y en a (et il y en a, s'ils veulent la conformité), c'est plutôt
dans le fait qu'ils n'analyse pas les caractères dans les
chaînes et les commentaires, à part chercher la fin, et qu'ils
passent ce qu'il y a dans le fichier d'entrée, sans le moindre
validation ni traitement.
On Jul 7, 6:12 pm, Jean-Marc Bourguet <j...@bourguet.org> wrote:
> "loic.actarus.j...@numericable.fr" <loic.actarus.j...@numericable.fr> writes:
> > On 7 juil, 10:02, James Kanze <james.ka...@gmail.com> wrote:
> > > Enfin, pour revenir à ta question : tout ça, c'est la tout
> > > première phase de traduction, bien avant même la tokenisation.
> > > Il s'ensuit qu'un compilateur ne peut pas faire de distinction
> > > entre les caractères dans les identificateurs, dans les
> > > litéraux, et même dans les commentaires. Un compilateur qui
> > > accepte « été » dans un commentaire, dans un encodage
> > > quelconque, doit l'accepter aussi comme identificateur dans le
> > > même encodage ; formellement, ce que le compilateur voit après
> > > la première phase de traduction, c'est u00C9tu00C9 (ou quelque
> > > chose qu'il est obligé à traiter de façon identique). Où
> > > qu'apparaissent cette chaîne de caractères.
> > D'accord, nous avons donc eu la même compréhension du texte.
> > J'hésite à saisir un bug report à gcc.
> Je crois qu'ils sont au courant. Doc de gcc:
> Unless the experimental -fextended-identifiers option is used,
> GCC does not permit the use of characters outside the ASCII
> range, nor `u' and `U' escapes, in identifiers. Even with
> that option, characters outside the ASCII range can only be
> specified with the `u' and `U' escapes, not used directly in
> identifiers.
Et je crois qu'ailleurs (constantes de chaîne, commentaires), je
ne crois pas qu'il les traite réelement non plus. L'erreur, s'il
y en a (et il y en a, s'ils veulent la conformité), c'est plutôt
dans le fait qu'ils n'analyse pas les caractères dans les
chaînes et les commentaires, à part chercher la fin, et qu'ils
passent ce qu'il y a dans le fichier d'entrée, sans le moindre
validation ni traitement.
On Jul 7, 6:12 pm, Jean-Marc Bourguet wrote:
> "" writes:
> > On 7 juil, 10:02, James Kanze wrote:
> > > Enfin, pour revenir à ta question : tout ça, c'est la tout
> > > première phase de traduction, bien avant même la tokenisation.
> > > Il s'ensuit qu'un compilateur ne peut pas faire de distinction
> > > entre les caractères dans les identificateurs, dans les
> > > litéraux, et même dans les commentaires. Un compilateur qui
> > > accepte « été » dans un commentaire, dans un encodage
> > > quelconque, doit l'accepter aussi comme identificateur dans le
> > > même encodage ; formellement, ce que le compilateur voit après
> > > la première phase de traduction, c'est u00C9tu00C9 (ou quelque
> > > chose qu'il est obligé à traiter de façon identique). Où
> > > qu'apparaissent cette chaîne de caractères.
> > D'accord, nous avons donc eu la même compréhension du texte.
> > J'hésite à saisir un bug report à gcc.
> Je crois qu'ils sont au courant. Doc de gcc:
> Unless the experimental -fextended-identifiers option is used,
> GCC does not permit the use of characters outside the ASCII
> range, nor `u' and `U' escapes, in identifiers. Even with
> that option, characters outside the ASCII range can only be
> specified with the `u' and `U' escapes, not used directly in
> identifiers.
Et je crois qu'ailleurs (constantes de chaîne, commentaires), je
ne crois pas qu'il les traite réelement non plus. L'erreur, s'il
y en a (et il y en a, s'ils veulent la conformité), c'est plutôt
dans le fait qu'ils n'analyse pas les caractères dans les
chaînes et les commentaires, à part chercher la fin, et qu'ils
passent ce qu'il y a dans le fichier d'entrée, sans le moindre
validation ni traitement.
James Kanze writes:
> On Jul 7, 6:12 pm, Jean-Marc Bourguet wrote:
> > ""
> > writes:
> > > On 7 juil, 10:02, James Kanze wrote:
> > > > Enfin, pour revenir à ta question : tout ça, c'est la
> > > > tout première phase de traduction, bien avant même la
> > > > tokenisation. Il s'ensuit qu'un compilateur ne peut
> > > > pas faire de distinction entre les caractères dans les
> > > > identificateurs, dans les litéraux, et même dans les
> > > > commentaires. Un compilateur qui accepte « été » dans
> > > > un commentaire, dans un encodage quelconque, doit
> > > > l'accepter aussi comme identificateur dans le même
> > > > encodage ; formellement, ce que le compilateur voit
> > > > après la première phase de traduction, c'est
> > > > u00C9tu00C9 (ou quelque chose qu'il est obligé à
> > > > traiter de façon identique). Où qu'apparaissent cette
> > > > chaîne de caractères.
> > > D'accord, nous avons donc eu la même compréhension du
> > > texte. J'hésite à saisir un bug report à gcc.
> > Je crois qu'ils sont au courant. Doc de gcc:
> > Unless the experimental -fextended-identifiers option is
> > used, GCC does not permit the use of characters outside
> > the ASCII range, nor `u' and `U' escapes, in
> > identifiers. Even with that option, characters outside the
> > ASCII range can only be specified with the `u' and `U'
> > escapes, not used directly in identifiers.
> Et je crois qu'ailleurs (constantes de chaîne,
> commentaires), je ne crois pas qu'il les traite réelement
> non plus. L'erreur, s'il y en a (et il y en a, s'ils veulent
> la conformité), c'est plutôt dans le fait qu'ils n'analyse
> pas les caractères dans les chaînes et les commentaires, à
> part chercher la fin, et qu'ils passent ce qu'il y a dans le
> fichier d'entrée, sans le moindre validation ni traitement.
A lire leur doc sur le sujet, en dehors des identifieurs ils
font ce qu'il faut et ils ont des options pour changer les
defauts (voir -finput-charset, -fexec-charset,
-fwide-exec-charset). Mais tu penses peut-etre a quelque
chose d'autre?
James Kanze <james.ka...@gmail.com> writes:
> On Jul 7, 6:12 pm, Jean-Marc Bourguet <j...@bourguet.org> wrote:
> > "loic.actarus.j...@numericable.fr"
> > <loic.actarus.j...@numericable.fr> writes:
> > > On 7 juil, 10:02, James Kanze <james.ka...@gmail.com> wrote:
> > > > Enfin, pour revenir à ta question : tout ça, c'est la
> > > > tout première phase de traduction, bien avant même la
> > > > tokenisation. Il s'ensuit qu'un compilateur ne peut
> > > > pas faire de distinction entre les caractères dans les
> > > > identificateurs, dans les litéraux, et même dans les
> > > > commentaires. Un compilateur qui accepte « été » dans
> > > > un commentaire, dans un encodage quelconque, doit
> > > > l'accepter aussi comme identificateur dans le même
> > > > encodage ; formellement, ce que le compilateur voit
> > > > après la première phase de traduction, c'est
> > > > u00C9tu00C9 (ou quelque chose qu'il est obligé à
> > > > traiter de façon identique). Où qu'apparaissent cette
> > > > chaîne de caractères.
> > > D'accord, nous avons donc eu la même compréhension du
> > > texte. J'hésite à saisir un bug report à gcc.
> > Je crois qu'ils sont au courant. Doc de gcc:
> > Unless the experimental -fextended-identifiers option is
> > used, GCC does not permit the use of characters outside
> > the ASCII range, nor `u' and `U' escapes, in
> > identifiers. Even with that option, characters outside the
> > ASCII range can only be specified with the `u' and `U'
> > escapes, not used directly in identifiers.
> Et je crois qu'ailleurs (constantes de chaîne,
> commentaires), je ne crois pas qu'il les traite réelement
> non plus. L'erreur, s'il y en a (et il y en a, s'ils veulent
> la conformité), c'est plutôt dans le fait qu'ils n'analyse
> pas les caractères dans les chaînes et les commentaires, à
> part chercher la fin, et qu'ils passent ce qu'il y a dans le
> fichier d'entrée, sans le moindre validation ni traitement.
A lire leur doc sur le sujet, en dehors des identifieurs ils
font ce qu'il faut et ils ont des options pour changer les
defauts (voir -finput-charset, -fexec-charset,
-fwide-exec-charset). Mais tu penses peut-etre a quelque
chose d'autre?
James Kanze writes:
> On Jul 7, 6:12 pm, Jean-Marc Bourguet wrote:
> > ""
> > writes:
> > > On 7 juil, 10:02, James Kanze wrote:
> > > > Enfin, pour revenir à ta question : tout ça, c'est la
> > > > tout première phase de traduction, bien avant même la
> > > > tokenisation. Il s'ensuit qu'un compilateur ne peut
> > > > pas faire de distinction entre les caractères dans les
> > > > identificateurs, dans les litéraux, et même dans les
> > > > commentaires. Un compilateur qui accepte « été » dans
> > > > un commentaire, dans un encodage quelconque, doit
> > > > l'accepter aussi comme identificateur dans le même
> > > > encodage ; formellement, ce que le compilateur voit
> > > > après la première phase de traduction, c'est
> > > > u00C9tu00C9 (ou quelque chose qu'il est obligé à
> > > > traiter de façon identique). Où qu'apparaissent cette
> > > > chaîne de caractères.
> > > D'accord, nous avons donc eu la même compréhension du
> > > texte. J'hésite à saisir un bug report à gcc.
> > Je crois qu'ils sont au courant. Doc de gcc:
> > Unless the experimental -fextended-identifiers option is
> > used, GCC does not permit the use of characters outside
> > the ASCII range, nor `u' and `U' escapes, in
> > identifiers. Even with that option, characters outside the
> > ASCII range can only be specified with the `u' and `U'
> > escapes, not used directly in identifiers.
> Et je crois qu'ailleurs (constantes de chaîne,
> commentaires), je ne crois pas qu'il les traite réelement
> non plus. L'erreur, s'il y en a (et il y en a, s'ils veulent
> la conformité), c'est plutôt dans le fait qu'ils n'analyse
> pas les caractères dans les chaînes et les commentaires, à
> part chercher la fin, et qu'ils passent ce qu'il y a dans le
> fichier d'entrée, sans le moindre validation ni traitement.
A lire leur doc sur le sujet, en dehors des identifieurs ils
font ce qu'il faut et ils ont des options pour changer les
defauts (voir -finput-charset, -fexec-charset,
-fwide-exec-charset). Mais tu penses peut-etre a quelque
chose d'autre?
On Jul 8, 1:25 pm, Jean-Marc Bourguet wrote:
Il y a clairement une erreur dans la doc, puisque ces options
n'apparaissent pas dans la section « Option Summary ».
Enfin, je ne les connaissais pas non plus. Et je ne sais plus avec quelle
version j'ai fait mes essais.
Tout ça, sans option. Si je donne l'option -finput-charset=ISO8859-1,
avec le premier essai (0xE9 pour les 'é'), le programme généré sort bien
de l'UTF-8. L'option a l'air de marcher, mais sans l'option, c'est un peu
aléatoire, et non comment décrit.
On Jul 8, 1:25 pm, Jean-Marc Bourguet <j...@bourguet.org> wrote:
Il y a clairement une erreur dans la doc, puisque ces options
n'apparaissent pas dans la section « Option Summary ».
Enfin, je ne les connaissais pas non plus. Et je ne sais plus avec quelle
version j'ai fait mes essais.
Tout ça, sans option. Si je donne l'option -finput-charset=ISO8859-1,
avec le premier essai (0xE9 pour les 'é'), le programme généré sort bien
de l'UTF-8. L'option a l'air de marcher, mais sans l'option, c'est un peu
aléatoire, et non comment décrit.
On Jul 8, 1:25 pm, Jean-Marc Bourguet wrote:
Il y a clairement une erreur dans la doc, puisque ces options
n'apparaissent pas dans la section « Option Summary ».
Enfin, je ne les connaissais pas non plus. Et je ne sais plus avec quelle
version j'ai fait mes essais.
Tout ça, sans option. Si je donne l'option -finput-charset=ISO8859-1,
avec le premier essai (0xE9 pour les 'é'), le programme généré sort bien
de l'UTF-8. L'option a l'air de marcher, mais sans l'option, c'est un peu
aléatoire, et non comment décrit.
On 6 juil, 11:12, Rémi Moyen wrote:Bonjour,
En relisant un bout de code, je suis tombé sur une classe qui contient
un int comme membre, et bien que cette variable ne soit jamais
initialisée explicitement, elle a toujours la valeur 0 et le code
marche correctement. Ce que je ne comprends pas vraiment, je croyais
que les variables locales n'étaient pas initialisées à 0
automatiquement...
[snip]Si quelqu'un pouvait m'expliquer, ça m'aiderait pas mal... Merci
d'avance !
As tu essayé avec divers degré d'optimisation ? Si je me souviens
bien, j'ai eu ce cas pour un programme qui marchait bien en mode debug
mais qui plantait en -02 à cause d'une variable non initialisée qui
prenait une valeur aléatoire.
On 6 juil, 11:12, Rémi Moyen <rmo...@gmail.com> wrote:
Bonjour,
En relisant un bout de code, je suis tombé sur une classe qui contient
un int comme membre, et bien que cette variable ne soit jamais
initialisée explicitement, elle a toujours la valeur 0 et le code
marche correctement. Ce que je ne comprends pas vraiment, je croyais
que les variables locales n'étaient pas initialisées à 0
automatiquement...
[snip]
Si quelqu'un pouvait m'expliquer, ça m'aiderait pas mal... Merci
d'avance !
As tu essayé avec divers degré d'optimisation ? Si je me souviens
bien, j'ai eu ce cas pour un programme qui marchait bien en mode debug
mais qui plantait en -02 à cause d'une variable non initialisée qui
prenait une valeur aléatoire.
On 6 juil, 11:12, Rémi Moyen wrote:Bonjour,
En relisant un bout de code, je suis tombé sur une classe qui contient
un int comme membre, et bien que cette variable ne soit jamais
initialisée explicitement, elle a toujours la valeur 0 et le code
marche correctement. Ce que je ne comprends pas vraiment, je croyais
que les variables locales n'étaient pas initialisées à 0
automatiquement...
[snip]Si quelqu'un pouvait m'expliquer, ça m'aiderait pas mal... Merci
d'avance !
As tu essayé avec divers degré d'optimisation ? Si je me souviens
bien, j'ai eu ce cas pour un programme qui marchait bien en mode debug
mais qui plantait en -02 à cause d'une variable non initialisée qui
prenait une valeur aléatoire.
In article com>,
Michael Doubez wrote:
>On 6 juil, 11:12, Rémi Moyen wrote:
>> Bonjour,
>> En relisant un bout de code, je suis tombé sur une classe qui contie nt
>> un int comme membre, et bien que cette variable ne soit jamais
>> initialisée explicitement, elle a toujours la valeur 0 et le code
>> marche correctement. Ce que je ne comprends pas vraiment, je croyais
>> que les variables locales n'étaient pas initialisées à 0
>> automatiquement...
>[snip]
>> Si quelqu'un pouvait m'expliquer, ça m'aiderait pas mal... Merci
>> d'avance !
>As tu essayé avec divers degré d'optimisation ? Si je me souviens
>bien, j'ai eu ce cas pour un programme qui marchait bien en mode debug
>mais qui plantait en -02 à cause d'une variable non initialisée qui
>prenait une valeur aléatoire.
C'est un des defauts de gcc: il a tendance a initialiser les variables
locales a 0 en -O0, et en -O1. Ce defaut disparait en -O2, mais c'est
souvent plus difficile a suivre avec le debugger.
D'ou gros souci pour le debutant.
In article <eedec6c1-0161-41f5-a62a-e8cb910ab...@37g2000yqp.googlegroups. com>,
Michael Doubez <michael.dou...@free.fr> wrote:
>On 6 juil, 11:12, Rémi Moyen <rmo...@gmail.com> wrote:
>> Bonjour,
>> En relisant un bout de code, je suis tombé sur une classe qui contie nt
>> un int comme membre, et bien que cette variable ne soit jamais
>> initialisée explicitement, elle a toujours la valeur 0 et le code
>> marche correctement. Ce que je ne comprends pas vraiment, je croyais
>> que les variables locales n'étaient pas initialisées à 0
>> automatiquement...
>[snip]
>> Si quelqu'un pouvait m'expliquer, ça m'aiderait pas mal... Merci
>> d'avance !
>As tu essayé avec divers degré d'optimisation ? Si je me souviens
>bien, j'ai eu ce cas pour un programme qui marchait bien en mode debug
>mais qui plantait en -02 à cause d'une variable non initialisée qui
>prenait une valeur aléatoire.
C'est un des defauts de gcc: il a tendance a initialiser les variables
locales a 0 en -O0, et en -O1. Ce defaut disparait en -O2, mais c'est
souvent plus difficile a suivre avec le debugger.
D'ou gros souci pour le debutant.
In article com>,
Michael Doubez wrote:
>On 6 juil, 11:12, Rémi Moyen wrote:
>> Bonjour,
>> En relisant un bout de code, je suis tombé sur une classe qui contie nt
>> un int comme membre, et bien que cette variable ne soit jamais
>> initialisée explicitement, elle a toujours la valeur 0 et le code
>> marche correctement. Ce que je ne comprends pas vraiment, je croyais
>> que les variables locales n'étaient pas initialisées à 0
>> automatiquement...
>[snip]
>> Si quelqu'un pouvait m'expliquer, ça m'aiderait pas mal... Merci
>> d'avance !
>As tu essayé avec divers degré d'optimisation ? Si je me souviens
>bien, j'ai eu ce cas pour un programme qui marchait bien en mode debug
>mais qui plantait en -02 à cause d'une variable non initialisée qui
>prenait une valeur aléatoire.
C'est un des defauts de gcc: il a tendance a initialiser les variables
locales a 0 en -O0, et en -O1. Ce defaut disparait en -O2, mais c'est
souvent plus difficile a suivre avec le debugger.
D'ou gros souci pour le debutant.
On 12 juil, 18:11, (Marc Espie) wrote:C'est un des defauts de gcc: il a tendance a initialiser les variables
locales a 0 en -O0, et en -O1. Ce defaut disparait en -O2, mais c'est
souvent plus difficile a suivre avec le debugger.
Et, pour ajouter à la confusion, gcc ne détecte certains cas de
variables non initialisées qu'en mode -O2 car l'analyse de flux est
alors activée.
D'ou gros souci pour le debutant.
AMA le problème est alors un problème d'outil. valgrind, efence ou
même splint localisent facilement ce genre de problème.
On 12 juil, 18:11, es...@lain.home (Marc Espie) wrote:
C'est un des defauts de gcc: il a tendance a initialiser les variables
locales a 0 en -O0, et en -O1. Ce defaut disparait en -O2, mais c'est
souvent plus difficile a suivre avec le debugger.
Et, pour ajouter à la confusion, gcc ne détecte certains cas de
variables non initialisées qu'en mode -O2 car l'analyse de flux est
alors activée.
D'ou gros souci pour le debutant.
AMA le problème est alors un problème d'outil. valgrind, efence ou
même splint localisent facilement ce genre de problème.
On 12 juil, 18:11, (Marc Espie) wrote:C'est un des defauts de gcc: il a tendance a initialiser les variables
locales a 0 en -O0, et en -O1. Ce defaut disparait en -O2, mais c'est
souvent plus difficile a suivre avec le debugger.
Et, pour ajouter à la confusion, gcc ne détecte certains cas de
variables non initialisées qu'en mode -O2 car l'analyse de flux est
alors activée.
D'ou gros souci pour le debutant.
AMA le problème est alors un problème d'outil. valgrind, efence ou
même splint localisent facilement ce genre de problème.