Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

variable externe

21 réponses
Avatar
did
salut
voici mon probleme : je déclare une variable externe dans un fichier
d'en tete, comme ceci
#include <stdio.h>

...

extern int truc ;


ensuite, je désire l'utiliser dans un autre fichier qui inclus le
fichier d'entete ou est déclaré truc.
Je fais donc :
truc = 2 ;
et la le compilateur me dit qu'en gros, il ne sait pas d'ou sort la
variable truc.
J'aimerai savoir comment on fait pour pouvoir se servir d'une variable
externe...
merci :)
did

10 réponses

1 2 3
Avatar
TP

J'ai un peu bon là avec ma remarque ou pas du tout ?


Euh, à ton avis ?


C'est clair, j'ai tout bon.
TP


Avatar
TP


Si elle est en dehors d'une fonction, elle est forcément hors d'un bloc.


Euh, ça serait pas plutôt "Si elle est en dehors d'une fonction, elle
est forcément DANS un bloc." ?
TP

Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', TP <noSpam> wrote:

Si elle est en dehors d'une fonction, elle est forcément hors d'un bloc.


Euh, ça serait pas plutôt "Si elle est en dehors d'une fonction, elle
est forcément DANS un bloc." ?


Je sais pas. Montre un exemple. (Je rappelle qu'un bloc est ce qu'il y a
entre { et } inclus, dans une fonction.)

--
-ed- get my email here: http://marreduspam.com/ad672570
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/


Avatar
TP
In 'fr.comp.lang.c', TP <noSpam> wrote:

Si elle est en dehors d'une fonction, elle est forcément hors d'un bloc.


Euh, ça serait pas plutôt "Si elle est en dehors d'une fonction, elle
est forcément DANS un bloc." ?


Je sais pas. Montre un exemple. (Je rappelle qu'un bloc est ce qu'il y a
entre { et } inclus, dans une fonction.)


je pense à quelque chose comme ça où le bloc est à l'intérieur de la
fonction main, mais il pourrait aussi bien être à l'intérieur d'une
autre fonction :

#include les_entete_qui_vont_bien

int main(void) {

int a;
int b;
....

// du code ici, par exemple.

{
int i;
for(i = 0; i < max; i++)
printf("Valeur : %dn", laValeur);
}

// du code ici, par exemple.

return 0;
}

-------------------
Je ne pense pas que l'on puisse trouver ceci ?

// début du module
#include les_entete_qui_vont_bien

{
int a;
int b;
}

int main(void) {
// déclaration d'autres variables
// du code ici
return 0;
}

// fin du module



Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', TP <noSpam> wrote:

Je ne pense pas que l'on puisse trouver ceci ?

// début du module
#include les_entete_qui_vont_bien

{
int a;
int b;
}


Evidemment, c'est bien pour ça que :

<quote="-ed-">
Si elle est en dehors d'une fonction, elle est forcément hors d'un bloc.
</quote>

--
-ed- get my email here: http://marreduspam.com/ad672570
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/

Avatar
TP

Evidemment, c'est bien pour ça que :

<quote="-ed-">
Si elle est en dehors d'une fonction, elle est forcément hors d'un bloc.
</quote>


oui ok, j'ai pigé cette fois-ci.


Mais est-ce que l'on trouve des cas où on pourrait avoir des
déclarations de variables entre accolades et en dehors de toutes
fonction, comme ce qui suit ??
A mon avis non car a et b sont créées à l'entrée dans le bloc et sont
détruites à sa sortie, non??

// début du module
#include les_entete_qui_vont_bien

{
int a;
int b;
}

int main(void) {
// déclaration d'autres variables
// du code ici
return 0;
}

// fin du module

Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', TP <noSpam> wrote:

Mais est-ce que l'on trouve des cas où on pourrait avoir des
déclarations de variables entre accolades et en dehors de toutes
fonction, comme ce qui suit ??


Non!

--
-ed- get my email here: http://marreduspam.com/ad672570
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/

Avatar
kUfa
Si, avec les namespaces.


--

// ---

_/___
!! / come and buy your
/ o demos @ scene'r us ''~``
¯¯/¯¯ ( o o )
+------------------.oooO--(_)--Oooo.------------------+
| |
| .oO kUfa Oo. |
| |
| cOdE @ |
| |
| [S]caraB ... http://www.scarab-amiga.com |
| ScOopEx ... http://www.scoopex.org |
| _ |
| .oooO _ // amIga |
|( ) Oooo. X/ ruLZ! |
+--+------------------ (----( )-------+------------+
| _) ) / |
| (_/ |
+--O ________________ |
/ o---+
__________ Kufa __/__/________________
____//___ // __/. // .___
__. // / __//¯¯ /
//__ / // /______ ___ /___//
¯ z!o/___// / ¯ ¯ ¯ / ¯
¯ ./
/
Avatar
Richard Delorme
Si, avec les namespaces.


Ça n'existe pas dans le langage C.

--
Richard

Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', "kUfa" wrote:

Si, avec les namespaces.




namespace en C?

(Rappel, une signature USENET, c'est 4 lignes maximum)

--
-ed- get my email here: http://marreduspam.com/ad672570
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/

1 2 3