Variables externes (c)

bonjour,

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

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    "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)
    1. "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 ;)
      1. Contributeur
        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