OVH Cloud OVH Cloud

changement de type au link

13 réponses
Avatar
Akeu
Bonjour,
si dans un fichier on défini
char Variable;
et dans un autre fichier on utilise
extern int Variable;
pour l'instant avec gcc je n'ai pas d'erreur ni de warning
comme faire pour éviter ce genre de bug au link ?

3 réponses

1 2
Avatar
Emmanuel Delahaye
Emmanuel Delahaye wrote:

sauf cas extrêmement rares, tu ne devrais pas avoir de globales.


Même si ce sont des const ?


Ok pour les const...

--
C is a sharp tool


Avatar
Harpo
Antoine Leca wrote:

surtout celles qui génèrent un symbole extern (non static).


(Euh, je ne suis pas sûr que les théoriciens qui crient "mort aux
globales" fassent des exceptions pour les static.)


Il y a même des extrémistes fondamentalistes qui veulent éradiquer les
variables.

Le Message-id s'obtient dans Google Groups en regardant le message en
format original (?dmode=source)
</USENET>


rassure-toi, je me souvenais du message-id...

(...)

Euh, si en passant en C++ il m'oblige à rajouter des transtypages à
mon sens inutiles, moi j'abandonne avant...


J'ai abandonné peu après.
J'ai eu surtout des problèmes pour me linker dynamiquement (pendant
l'exécution) à des modules écrits en C++ car le compilo C++ bidouille
(mangle) les symboles extern.

--
http://harpo.free.fr/


Avatar
TERENCE


Ensuite, il faut que les déclarations (dans le xxx.h) soit de la forme
GLOBALE char c;
avec préalablement
#define GLOBALE extern
dans un entête normalement #inclus.


ARG !
J'ai proposé il n'y a pas longtemps quelque chose de ce genre en
simplifié, ça ne passe pas, Emdel trouve cela 'horrible et inutile' ;-)


Les variables globales sont ces moulins ... tu ne pouvais plus mal tombé.


1 2