Problème de link avec Borland C++ 5.5
Je suis en train de préparer une petite présentation concenant les namespace's et pour illustrer mon propos j'ai préparé les fichiers suivants :
Code:
1 2 3 4 5 6 7 8 9 10
| // Fichier : tstMod.cpp
#include <iostream>
using namespace std ;
#include "modA.h"
#include "modB.h"
int main( )
{
procedure() ;
return 0 ;
} |
Code:
1 2 3 4 5 6 7
| // Fichier : modA.h
#ifndef MODA_H
#define MODA_H
#include <iostream>
using namespace std ;
void procedure() ;
#endif |
Code:
1 2 3 4 5 6
| // Fichier : modA.cpp
#include "modA.h"
void procedure()
{
cout << "ModulA" << endl ;
} |
Code:
1 2 3 4 5 6 7
| // Fichier : modB.h
#ifndef MODB_H
#define MODB_H
#include <iostream>
using namespace std ;
void procedure() ;
#endif |
Code:
1 2 3 4 5 6
| // Fichier : modB.cpp
#include "modB.h"
void procedure()
{
cout << "ModulB" << endl ;
} |
Ceci a pour but de mettre en évidence un clash de nom. Les deux modules exportent deux fonctions de même signature.
Malheureusement le linker (ilink32) de Borland ne râle pas... Il prend simplement la procédure qui se trouve dans le premier module donné sur la ligne de compilation.
J'ai testé ce code avec VC et GPP et tous deux envoient une erreur.
J'ai compilé avec l'instruction suivante :
bcc32 tstmod.cpp moda.cpp modb.cpp
Aurais-je oublié une option ou est-ce un bug ?
Merci
PS.
J'ai le même problème avec Builder 5