Variables externes (c)
echantillon
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
bonjour,
j'ai un problème avec mes variables externes, des float, petit exemple :
dans un fichier 1:
dans un fichier 2:
j'ai un problème avec mes variables externes, des float, petit exemple :
dans un fichier 1:
... int i = "100"; float f = "1.56" ...
dans un fichier 2:
...
extern i,f;
...
printf ("%d",i); // me renvoie 100
printf("%f",f); // me renvoie toujours 0,000000
...Configuration: Linux Firefox 2.0
3 réponses
-
"x" // type const char*
Donc, lorsque tu fait int i="100" je suis même étonner que ça fonctionne.
Tu utilise peut être un vieux compilo, mais normalement les extern doivent être typer.
en C pas classique, mais dans le temps ça passait, une variable non typé était un entier (un peu comme en fortran)
Donc, extern i,f; <=> extern int i,f;
Ensuite, tu lit un float comme un entier, donc ça doit pas lui plaire.
Ce qu'il faut faire :
extern int i;
extern float f;
Le compilateur a besoin de connaitre le type d'une variable, dans ton cas il ne le connait réellement qu'à l'édition des liens. D'où un typage dans chaque fichier (comme pour les fonctions) -
"Donc, lorsque tu fait int i="100" je suis même étonner que ça fonctionne. "
oulà donc non !! j'ai écrit trop vite, expéditivement même.
j' écrit ça :
int i = 100;
et non avec des " " .
j'utilise gcc 3.4.6 et ça marche.
Ce que je ne savais pas en fait, c'était qu'il fallait préciser le type quand on fait appel a une variable externe .
avec ça mes float ne déconnent plus ;)
je vais aussi préciser le type de mes int dans la déclaration extern; ca a l'air plus "correct".
merci ;) -
je suis étonner que ça compile sans les "int" parceque des fois il y a une erreur et le compilo me dit: "declaration d'int sans type n'est pas du C ansi !"
Pour être le plus propre possible, compile avec l'option -Wall. Là il ne devrai pas laisser passer un non typage sans râler un peu