[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-team] OT? initializing of automatic aggregate



#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 ?

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."

Y a-t-il des experts du C ANSI dans la salle ?

Eric.

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