conflit de noms ?

conflit de noms ? - C - Programmation

Marsh Posté le 10-08-2004 à 14:52:47    

Bonjour,
 
je dois dans un meme programme reprendre des bouts de code de sources differentes. seulement voila, je me retrouve avec des conflits de nom.
 
En c++, j'aurais utilisé des namespaces, mais ca n'existe apparement pas en C.
 
qq1 aurait une idée pour contourner le problème ?
 
(a part renommer toutes les fonctions/variables en conflit)


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 10-08-2004 à 14:52:47   

Reply

Marsh Posté le 10-08-2004 à 14:53:56    

met en static quand tu peux
 
[edit] j'ai rien dit :D


Message édité par cris56 le 10-08-2004 à 14:55:15
Reply

Marsh Posté le 10-08-2004 à 14:55:56    

en static => la fonction est local, et n'est donc pas visible de l'exterieur de l'unité de compilation, donc le linker peut prendre 2 fonctions static du meme nom dans 2 unités de compilation différentes c bien ca ?


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 10-08-2004 à 14:59:21    

si elle sont toutes les deux static, oui

Reply

Marsh Posté le 10-08-2004 à 15:07:06    

BlackGoddess a écrit :

en static => la fonction est local, et n'est donc pas visible de l'exterieur de l'unité de compilation, donc le linker peut prendre 2 fonctions static du meme nom dans 2 unités de compilation différentes c bien ca ?


 
En static le linker ne vera jamais me symbole de la fonction donc tout devrait aller.

Reply

Marsh Posté le 10-08-2004 à 15:10:32    

je peux pas me permettre de tout mettre en statique, en effet des fonctions sont utilisées dans plusieurs fichiers :/
 
sinon, je pensais peut-etre a un autre moyen (je ne sais pas si c'est possible)
 
compiler une partie du projet en librairie statique, cette librairie n'exportant que certaines fonctions
puis lier cette librairie au reste du projet ?
 
je sais que c'est possible sous windows, mais la je suis avec gcc sous linux, est-ce egalement possible ? si oui, ou je pourrait trouver de la doc la dessus ?


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 11-08-2004 à 00:15:41    

Pacool pour la maintenance et pour la lisibilité ... !
 
Tu mets en static ce qui est local à un seul fichier
pas la peine de mettre tout static dans chaque fichier.
 
ex : si une fonction est utilisée dans plusieurs fichiers, tu ne la déclares pas static. Si une autre fonction à le même nom, si elle est locale à son fichier, ça marchera si tu déclares cette dernière static.
 
Après si tu as deux fonctions non locales qui ont le même nom, ben ya pas de solution simple.
Sauf les renommer (et ça serait mieux pour la lisibilité de ton code...)


Message édité par leneuf22 le 11-08-2004 à 00:16:09
Reply

Marsh Posté le 11-08-2004 à 00:45:01    

oui oui la solution static était déjà épuisée ...
 
donc je me suis lancé dans le renommage de fonction.


---------------
-( BlackGoddess )-
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed