[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/