[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [linux-team] OT? initializing of automatic aggregate
Eric Darchis wrote:
>
> #include <stdio.h>
> #include <stdlib.h>
>
> int main()
> {
> char brol[10] = "Hello";
> printf("%s\n", brol);
> return 0;
> }
>
> Ce bout de code compile au poil sous Linux, sous AIX, pareil. Seulement sur
> un Pyramid (SVR4), j'obtiens un warning "Initializing of automatic aggregate".
>
> Vous me direz qu'un warning ce n'est pas grave et que le programme tourne
> quand meme mais j'aimerais bien comprendre. Il semblerait selon mes
> recherches que certains SunOS font la meme erreur a cause d'une discussion
> sur les aggregates dans la norme ANSI...
>
> Solutions pour killer le warning:
> - Fermer les yeux
> - Declarer la variable en static
> - Declarer la variable en global
>
> Avec une fonction recursive, je suis marron...
>
> Donc, qqn peut-il m'expliquer ce qu'est un "automatic aggregate" ?
> Pourquoi ca pose probleme sur ce systeme ?
Pour moi ca doit etre le "hello"
> J'emets une theorie issue de mes recherches profondes:
> "Une variable globale ou statique est remplie au load du segment data par
> l'OS hors de l'executable. => 0 code.
> Dans le cas d'une variable locale, cette variable est empilee a chaque
> appel de la fonction par le programme lui-meme. Donc, il faut generer du
> code pour assigner "Hello" a brol a l'appel."
essaye un equivalent de "gcc -S" et regarde le code genere !
Et que fait
char *p="Hello";
char q[10];
y a t-il aussi un warning ?
Si non, c'est donc le "=" qui pose probleme, et l'agregat serait le
p[10] !
... Nous n'avont pas d'autre esplications !
>
> Y a-t-il des experts du C ANSI dans la salle ?
>
> Eric.
>
--
Linux : May the sources be with you !
KeyLinux
Alain Spineux
Linux System Engineer
---------
Visit the Linux Supertore Online: http://www.redcorp.com !
If you want to be deleted from the list, send a mail to
majordomo@rtfm.be with "unsubscribe linux-team" in the body.
Archive of the list: http://tania.be.linux.org/